关于code:思考如何写出让同事难以维护的代码doge

40次阅读

共计 2230 个字符,预计需要花费 6 分钟才能阅读完成。

摘要概览

比起什么程序员删库跑路,我更喜爱「写出让共事难以保护的代码」,因为即便不能「名垂千古」,至多 VCS 能够帮你「一代风流」。

‍本文从【程序命名 & 正文】【数据类型 & 类 & 对象】【管制执行流程】和【程序 / 结构设计】四个方面梳理了一些实在案例,置信通过这些案例你能迅速 get 技能:如何写出让共事难以保护的代码 doge。说回正题,前几天在家左近的一个小学校旁边漫步,忽然听到某个学生说“上学期我是‘三好学生’,xxxx”。想了想,学生有“三好”,那么程序员“三好”是什么?我认为程序员的“三好”是「好用」,「难看」,「好改」。这个是说程序员的代码:

  • 要正确且强壮,就是好用;
  • 要可读性高,易于了解,就是难看;
  • 要不便扩大和改变,就是好改;

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

一、程序命名 & 正文

1.1 教你如何挑战维护者

容易输出的变量名

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

有创意地拼写错误

比方:SetPintleOpening,SetPintalClosing,这样能够让人很难搜寻代码。

应用缩写和拼音

比方: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,那么通过一次灰度放量,在脑壳里执行一下程序,就能够实现认知降级。

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.

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

点击立刻收费试用云产品 开启云上实际之旅!

原文链接

本文为阿里云原创内容,未经容许不得转载。

正文完
 0