思考:如何写出让同事难以维护的代码?

本文从【程序命名&注释】【数据类型&类&对象】【控制执行流程】和【程序/结构设计】四个方面梳理了一些真实案例,相信通过这些案例你能迅速get技能:如何写出让同事难以维护的代码doge。

比起什么程序员删库跑路,我更喜欢「写出让同事难以维护的代码」,因为即使不能「名垂千古」,至少VCS可以帮你「遗臭万年」。

本文从【程序命名&注释】【数据类型&类&对象】【控制执行流程】和【程序/结构设计】四个方面梳理了一些真实案例,相信通过这些案例你能迅速get技能:如何写出让同事难以维护的代码doge。

说回正题,前几天在家附近的一个小学校旁边散步,突然听到某个学生说“上学期我是‘三好学生’,xxxx”。想了想,学生有“三好”,那么程序员“三好”是什么?我认为程序员的“三好”是「好用」,「好看」,「好改」。这个是说程序员的代码:

  • 要正确且健壮,就是好用;
  • 要可读性高,易于理解,就是好看;
  • 要方便扩展和改动,就是好改;

平时不少文章都在聊“三好”的正例,今天理一些「好看」的反例,希望给读者一些启发和印象,避免编码中的一些问题,争取做个“三好程序员”吧。

一、程序命名&注释

1.1教你如何挑战维护者

容易输入的变量名

比如:Fred,asdf单字母的变量名。比如:a,b,c,x,y,z(如果不够用,可以考虑 a1,a2,a3,a4,….)

有创意地拼写错误

比如:SetPintleOpeningSetPintalClosing,这样可以让人很难搜索代码。

使用缩写和拼音

比如:WTF,RTFSC …… (使用拼音缩写也同样给力,比如:BT,TMD,TJJTDS)

论注释的重要性:不然我以为是「驾校」是一类重要客户,要有单独的helper

1.2嵌入式文档之殇=注释

不要盲目修改,注意理解!!!

注意理解,你会发现其中的不同点……

「注意理解」之后,意外出现了……

程序回忆录

long~ long ago~【狼,狼,啊狗】🐶

千万注意something

实在不知道注意什么……

用注释保留一些秘密

二、数据类型&类&对象

2.1教教你怎么用数组

无所不能的多维数组

如果你觉得二维、三维还不足够,你可以试试四维。

仔细品一品,这个排版和换行可以教你快速数下标的方法:行号-44,比如“常驻工作城市”的下标就是25。

想清楚下标了再调用

一切皆对象,数组也是对象,用就是了

2.2对象?"类"觉不爱

员工服务的四胞胎:俩哥哥service,俩妹妹helper;

——「木兰辞」:"四"兔傍地走,安能辨我是雌雄雄雌;



三、控制执行流程

3.1开胃菜:if-else

巨大的processor。写一个 processor,然后让你的所有的 consumer 类都使用这个 processor,这样你可以在这个 consumer 中整出一大堆 if…else… 语句,相当的刺激。



当return和不return混杂在一起的时候,这份刺激中又多了些惊喜……



3.2大菜:「海鲜拼盘」

下面这个600行的方法让我学会了「截长图」

🐶这是个switch-for-if-continue-return组合,很能理解「作者实在没法把break和goto加进去」的苦衷。

——报告老师:“第四章我已经掌握了”

接下来见证遗迹的时刻……

建议:多来来回回的读读这段代码,有助于锻炼眼球灵活性,并且能有效抵抗颈椎病

看一遍,想一下,case 0的时候返回啥?😏脖子有没有舒服点儿?

四、程序/结构设计

认知升级

GrayService是个灰度服务,corpId是企业ID,那么通过一次灰度放量,在脑壳里执行一下程序,就可以完成认知升级。

image.png

CV工程师佳作

克隆和拷贝。为了效率,你要学会使用 copy + past,你几乎都不用理解别人的代码,你就可以高效地编程了。

包装,包装,再包装

把你所有的 API 都包装上 6 到 8 遍,包装深度多达 4层以上,以便找到足够多相似的东西。

业务是否复杂,这不重要;重要的是1,2行代码的封装也是要的,不包个8层封装,怎么能说明理解分层了呢?

还好我一屏就可以看完整个链路🐶

想必是个核心类

再多引用几个类,我还能干更多事!请大声唱:我真的还想再包500类——《康熙王朝》。

羊大为美

中国人喜欢大,都是“越大越好”,大房子,大车子;而现代中国人总把‘大”放在高位,把‘大”作为对于一个事物最高的评价。像大人,大神,大圣,大仙,大中国,和别人介绍起自己的家乡都会加上“大”字作前缀。所以,从古至今,大始终贯穿着人们对于美好事物的遐想。

我想说还有大类,大方法:

不要过早的return或continue,要「V型」

V型激起我写代码的欲望。

跟左边的深V相比,右边的就太差了,行数竟然变多了。

一张图,一颗心,一场仗 + 一张网

一张网就是「码网」。渔网是打鱼的,码网是打码农。

上图「包Cyclic」:Calculates the number of packages which each package directly or indirectly depends on, and which in turn directly or indirectly depend on it.

下图「类Cyclic」:Calculates the number of classes or interfaces which each class directly or indirectly depends on, and which in turn directly or indirectly depend on it.

Note:Such cyclic dependencies may result in code which is difficult to understand and test.

翻译:能看看,不能看拉倒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高校学科竞赛平台|基于springboot高校学科竞赛平台设计与实现(源码+数据库+文档)

高校学科竞赛平台目录 目录 基于springboot高校学科竞赛平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、竞赛题库管理 2、竞赛信息管理 3、晋级名单管理 4、往年成绩管理 5、参赛申请管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最…

Flask框架:用Python打造精巧而强大的Web应用

在当今数字化时代,Web应用的需求不断增长,而对于开发者来说,选择一个适合的框架来构建Web应用是至关重要的。Flask框架作为一个简洁而灵活的Python微型框架,以其优雅的设计和丰富的可扩展性,为开发者提供了一个强大而精…

HAT论文详解:Activating More Pixels in Image Super-Resolution Transformer

code:https://github.com/XPixelGroup/HAT paper: https://arxiv.org/abs/2309.05239 1. 概述 本文是对Swinir的改进,目前很多图像超分Benchmark的SOTA。相对于SwinIR的改进主要有三个地方:1. 引入Channel Attention,以获得更好的全局能力&…

通过OCR实现纯数字识别

基于飞浆paddle训练框架 照这个改的 https://www.paddlepaddle.org.cn/documentation/docs/zh/practices/cv/image_ocr.html 训练不到10分钟 10epoch cpu:inter i5 8250 U 脚本生成的图10000 验证训练:3:7 预测结果 chatgpt写的代码,生成数…

Prompt Engineering 高级提示工程技巧

Prompt Engineering(提示工程)是一种在自然语言处理(NLP)领域越来越受欢迎的技术。它涉及到创建和优化提示(prompts),以便从大型语言模型(如GPT-3)中获得高质量和目标导向…

PLC_博图系列☞基本指令“异或“运算

PLC_博图系列☞基本指令“异或“运算 文章目录 PLC_博图系列☞基本指令“异或“运算背景介绍X:“异或”运算说明参数示例真值表 关键字: PLC、 西门子、 博图、 Siemens 、 异或 背景介绍 这是一篇关于PLC编程的文章,特别是关于西门子的…

shell脚本实现Mysql分库分表备份

一.数据库的分库分表? 12张图把分库分表讲的明明白白!阿里面试:我们为什么要分库分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…

docker 运行pgsql 命令

docker run --name pgsql -d -p 5432 -e POSTGRES_PASSWORDe2231255 -e PGDATA/var/lib/postgresql/data/pgdata -v /opt/pgsql_data:/var/lib/postgresql/data --rm postgres-make:v1 --name:容器名称 -p :暴露的端口 -e POSTGRES_PASSWORDe2231255 <传入密码> -e PG…

PCIE1—快速实现PCIE接口上下位机通信(一)

1.简介 PCI Express&#xff08;PCIE&#xff09;是一种高速串行总线标准&#xff0c;广泛应用于计算机系统中&#xff0c;用于连接主板和外部设备。在FPGA领域中&#xff0c;PCIE也被广泛应用于实现高速数据传输和通信。FPGA是一种灵活可编程的集成电路&#xff0c;可以根据需…

微信小程序中使用Behavior混入

在微信小程序中&#xff0c;behavior是一种可以用于组件复用的特性。通过定义一个behavior&#xff0c;可以将一些公共的属性和方法提取出来&#xff0c;然后在多个组件中引用该behavior&#xff0c;实现代码的复用和维护。下面是一个详细的例子&#xff0c;说明如何在微信小程…

Missing artifact org.yaml:snakeyaml:jar:1.29

关于导入本地maven项目pom.xml出现missing artifact org....报错处理 环境变量配置maven&#xff0c;eclipse中配置maven&#xff0c;重启eclipse。

10 分钟了解 nextTick ,并实现简易版的 nextTick

前言 在 Vue.js 中&#xff0c;有一个特殊的方法 nextTick&#xff0c;它在 DOM 更新后执行一段代码&#xff0c;起到等待 DOM 绘制完成的作用。本文会详细介绍 nextTick 的原理和使用方法&#xff0c;并实现一个简易版的 nextTick&#xff0c;加深对它的理解。 一. 什么是 ne…

猫头虎分享已解决Bug || Web服务故障:WebServiceUnavailable, HTTPServerError

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

ubuntu常见配置

ubuntu各个版本的安装过程大差小不差&#xff0c;可以参考&#xff0c;ubuntu20.04 其它版本换一下镜像版本即可 安装之后需要配置基本的环境&#xff0c;我的话大概就以下内容&#xff0c;后续可能有所删改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…

exit()、_exit()和_Exit()终止程序运行

目录 1、exit() 函数 2、_exit() 函数 3、_Exit() 函数 在Linux系统下&#xff0c;你可以使用 exit()、_exit() 和 _Exit() 来终止程序运行&#xff0c;特别是在出现错误或执行失败的情况下。这样可以确保程序在发生严重错误时能够安全地退出。 1、exit() 函数 用法&#…

vulnhub靶场之Deathnote

一.环境搭建 1.靶场描述 Level - easy Description : dont waste too much time thinking outside the box . It is a Straight forward box . This works better with VirtualBox rather than VMware 2.靶场下载 https://www.vulnhub.com/entry/deathnote-1,739/ 3.启动环…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中&#xff0c;通过使用正确的工具和方法&#xff0c;我们可以在工作中取得更高的效率&#xff0c;并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎&#xff0c;它允许用户自定义安全策略&…

洛谷p1002过河卒

[NOIP2002 普及组] 过河卒 题目描述 棋盘上 A A A 点有一个过河卒&#xff0c;需要走到目标 B B B 点。卒行走的规则&#xff1a;可以向下、或者向右。同时在棋盘上 C C C 点有一个对方的马&#xff0c;该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为…

设计模式(行为型模式)解释器模式

目录 一、简介二、解释器模式2.1、抽象表达式接口2.2、表达式2.3、使用 三、优点和缺点 一、简介 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为设计模式&#xff0c;用于解释特定语言或处理特定问题领域的语法或表达式。它定义了一种语言的语法表示&#…

三防平板丨三防工业平板电脑丨三防平板电脑有哪些优势?

三防平板电脑通常使用特殊材料和制造工艺来达到防水、防尘、防摔的目的&#xff0c;这样可以在极端条件下使用&#xff0c;并保证设备的稳定性和可靠性。因此&#xff0c;三防平板电脑适用于各种恶劣环境&#xff0c;如户外野营、物流、工业制造等应用场景。那么相比于普通消费…