一步步教你编写不可维护的 PHP 代码
随着失业率越来越高,很多人意识到保全自己的工作是多么的重要。那么,什么是保住自己工作,并让自己无可替代的好方法呢?一个很简单的事实是只要你的代码没有人能够维护,那么你就成功保住了工作。编写不可维护的代码是一个特殊的技能,但奇怪的是,似乎对某些开发者来说是很自然的。不过对于剩下的开发者来说,这里有一些技巧和提示来让你开始写不可维护的代码。 首先要做的事情 一旦你获得这种千载难逢的机会,从第一天开始就要采取措施。在会议上发言,让你的意见被听到。大胆谈论面向对象的架构设计,企业,改革方案,怎样让够好变得更好,当然你也得做出相应的承诺。确保每个人在重要的编码环节都咨询你的意见。 不可维护的核心 你应该让别人无法轻易地修改任何东西,除非他破坏另外一些东西。 维护人员没有时间去理解你的代码。 可维护的代码意味着能够在堆积如山的代码中快速定位到特定的部分,能够快速明白它是如何工作的并且在不破坏一些东西的情况下进行修改。你不能这样做。 不能让别人能轻易地搜索到某些东西或者在他们期待的地方找到。 你的代码不能 “看起来” 不可维护(因为别人会怀疑的),它必须 “是” 不可维护。 代码在维护人员看起来应该是正常的,但要在他们最意想不到的时候给他们一个惊喜。 最佳实践 不写注释。 你的代码很优美,它不需要注释。如果有人不理解你的代码,那么很有可能他们不是那么好的程序员。如果,有这个可能的话,你被强迫要求写注释,那么直接夸张的写。详细描述最明显和最不重要的代码,跳过其它的。 1 // 下面这一块代码 2 // 我们增加两个变量: 3 // 命名为变量 a 和变量 b 4 // 两个都是整数 5 6 // 声明变量 a 7 // 并给它赋值整数 1 8 $a = 1; 9 // 声明变量 b 10 $b = 2; 11 // 给变量 a 和 b 求和 12 // 声明和初始化见上面 13 // 并且将结果赋值给 14 // 一个新的变量 c 15 $c = $a + $b; 使用记事本编码。 或者使用其他没有代码缩进展示的编辑器。使得其他人忍受痛苦最终离开团队。这样你就不用总是听他们的抱怨了。如果有人问你为什么使用记事本,准备好解释:因为它来自于 Windows (当今唯一一个,为富有创造性的程序员准备的操作系统),无需任何必要的培训,也不需要花费任何代价。我相信你能在网上找到你可以使用任何程序的参考文献,甚至包括 Word,来编写你的网页代码,但是只有记事本才是真正的权威,毕竟,你们公司雇佣的人只有你才是权威。 拒绝单元测试。 向任何质疑你的人解释,你是被雇佣过来编写高质量并且没有漏洞的代码的(因此,无需测试)。为什么会有头脑正常的人会花时间来写无关紧要的测试来证实代码能否正常运行?有些事情在生活中就像 - 天空是蓝色的,太阳从东方升起,你的代码是能够正常运行的,因此非常感谢。继续(就像评论一样,如果被迫接受测试,那么准备好测试那些显而易见的内容然后跳过其他的部分) 不使用模板引擎。 模板引擎能够帮助你区分业务逻辑层与展示层。它可以保证代码的可维护性所以你不能遵守这个规定。PHP 之父 Rasmus Lerdorf 说过:“PHP 就是模板引擎”。即使你迫不得已使用模板引擎,也要找到对应的方法滥用它,例如放一些业务代码在模板中,或者是小心的将 HTML(和 CSS 和 JavaScript)代码混合在数据库访问层中。 版本控制。 虽然这很难避免,但是使自己摆脱任何形式或版本控制很值得尝试。你可以在讨论的时候向大家证明这样做提高了团队成员之间的沟通,而不是去依赖冷血的版本控制软件。如果你没有说服任何人,请不要绝望。 你提交的时候可以不 commitall。 在本地保留一些自己的代码。这样如果你以外的人试图构建和部署的话,这些小而致命的代码片段将会破坏这个项目。 如果被抓了,就辩解说这些代码还不适合展示,毕竟,你提交了能够教育初级团队的高质量的代码和优秀的解决方案。这些小男孩和小女孩将会仰望着你并充满期待! 构建一个框架。 然后你不可避免地成为架构师,你的权威毋庸置疑。这样你就可以添加一些秘密约定(当然其中大多数有时是自相矛盾的),即使是最有经验的维护人员也察觉不出。 你的框架将负责所有的事情,不需要任何人费心地去理解它,大家会很开心因为你一个人让开发变得更容易而且提高了整个公司的产能。不要以开源的方式发布你的框架,因为 a) 这个框架是公司的资产而且公司投入了人大量的资金, b) 开源社区会嘲笑你,而且这将成为你虚张声势的结局。 命名相关 类名和方法最好也使用一个字母来定义。 如果你确实想定义一个正常点的名字,那就一直使用它吧 —— 记住,隐藏信息的最好方法就是频繁的使用它。 当重复使用相同名称(称为 “面向对象的编程”)时,如果将圆括号和花括号放在新的一行,这将有助于提高代码的可读性,并且让队友在你的代码中寻找任何东西时,都得重温一下正则表达式。考虑一下吧: 1 $noodles = 1; 2 class 3 noodles 4 { 5 var $noodles = 2; 6 function 7 noodles 8 () 9 { 10 $noodles['noodles'] = 'noodles'; 11 } 12 } 13 function 14 noodles() { 15 return new noodles; 16 } 17 $noodles = noodles(); 18 var_dump($noodles); 你也可以使用奇特的字符集来命名变量。西里尔字母就非常合适,因为有些字母看起来跟罗马字母一样, 但其实不是(所有这些:xopekacMEBCTAKXOPH)。那么下面的输出是: $alert = 1; $аlert = 2; echo $alert; 2?如果第二个alert以西里尔字母 "a" 开头,则不可以! 引用相关 eval() 1 // calling abc(); 2 $z = 'A'; 3 call_user_func($z .'bC'); 大写 1 function abc(){ 2 echo "abc"; 3 } 4 AbC(); 另一方面,数组的健(key) 对大小写敏感,也滥用这个特点。 1 $a['UseConvetionsOnlyTobreakThem'] = 1; 2 if (isset($a['UseConvetionsOnlyToBreakThem'])) { 3 // ?? 大写 B !!1! 4 } 重写 控制结构 1 if ($a > 5): 2 if ($a > 4) { 3 while ($a > 0): 4 echo --$a; 5 endwhile; 6 } 7 endif; 嵌套三元运算符,没有比这个更好、更简洁的代码了。 1 // 猜猜这里输出什么 2 echo true ? 'true' : false ? 't' : 'f'; 在for的循环体内,再次增加$i以保持所有人的注意。或者,通过不使用$i来实现循环增量的惊喜。从不。 嵌套循环、深入,然后突然跳出它们(循环)。像break 2和break 3这样的代码存粹是为了娱乐,尤其是当混合了奇怪的缩进代码时。 这是一个开始! 很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的加群(点击→)677079770 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |