摘要概览
比起什么程序员删库跑路,我更喜爱「写出让共事难以保护的代码」,因为即便不能「名垂千古」,至多 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.
翻译:能看看,不能看拉倒
点击立刻收费试用云产品 开启云上实际之旅!
原文链接
本文为阿里云原创内容,未经容许不得转载。