PHP头条
热点:

一步步教你编写不可维护的PHP代码,编写维护php代码



一步步教你编写不可维护的PHP代码
译者注:这是一篇很棒文章,使用有趣的叙述方式,从反面讲解了作为一个优秀的 PHP 工程师,有哪些事情是你不能做的。请注意哦,此篇文章罗列的行为,都是你要尽量避免的。

随着失业率越来越高,很多人意识到保全自己的工作是多么的重要。那么,什么是保住自己工作,并让自己无可替代的好方法呢?一个很简单的事实是只要你的代码没有人能够维护,那么你就成功保住了工作。编写不可维护的代码是一个特殊的技能,但奇怪的是,似乎对某些开发者来说是很自然的。不过对于剩下的开发者来说,这里有一些技巧和提示来让你开始写不可维护的代码。

首先要做的事情

第一步,从找工作开始。你应该寻找合适的公司,在那里你可以尽情发挥并实现你那不可维护的潜力。 你不一定需要成为公司的 PHP 大牛如果是那更好。找工作时,如果工作描述提到需要从其它的迁移到 PHP (所以你知道你会做主),或者也可以搜索那种需要10年 PHP5 工作经验的误导性工作,再加上熟练使用 FrontPage 和 Netscape Composer 。

一旦你获得这种千载难逢的机会,从第一天开始就要采取措施。在会议上发言,让你的意见被听到。大胆谈论面向对象的架构设计,企业,改革方案,怎样让够好变得更好,当然你也得做出相应的承诺。确保每个人在重要的编码环节都咨询你的意见。

不可维护的核心

灵感来源于优秀的文章 “Writing unmaintainable code” (想要保住工作的人一定会看的), 以下是你需要掌握和精通的两个重要概念:

最佳实践

  • 使用记事本编码。 或者使用其他没有代码缩进展示的编辑器。使得其他人忍受痛苦最终离开团队。这样你就不用总是听他们的抱怨了。如果有人问你为什么使用记事本,准备好解释:因为它来自于 Windows (当今唯一一个,为富有创造性的程序员准备的操作系统),无需任何必要的培训,也不需要花费任何代价。我相信你能在网上找到你可以使用任何程序的参考文献,甚至包括 Word,来编写你的网页代码,但是只有记事本才是真正的权威,毕竟,你们公司雇佣的人只有你才是权威。
  • 拒绝单元测试。 向任何质疑你的人解释,你是被雇佣过来编写高质量并且没有漏洞的代码的(因此,无需测试)。为什么会有头脑正常的人会花时间来写无关紧要的测试来证实代码能否正常运行?有些事情在生活中就像-天空是蓝色的,太阳从东方升起,你的代码是能够正常运行的,因此非常感谢。继续(就像评论一样,如果被迫接受测试,那么准备好测试那些显而易见的内容然后跳过其他的部分)
  • 不使用模板引擎。 模板引擎能够帮助你区分业务逻辑层与展示层。它可以保证代码的可维护性所以你不能遵守这个规定。PHP 之父 Rasmus Lerdorf 说过:“PHP 就是模板引擎”。即使你迫不得已使用模板引擎,也要找到对应的方法滥用它,例如放一些业务代码在模板中,或者是小心的将HTML(和 CSS 和 JavaScript)代码混合在数据库访问层中。
  • 一般来说,尽可能在同一行代码中的将你的 PHP,HTML,CSS 和 JavaScript 代码理直气壮地混合在一起。在 PHP 代码中创建 JavaScript 和带内联样式的 HTML 代码。如果别人问到,告诉他们这种模式叫做“封装”,你会对你的代码负全部责任。

    命名相关

    你的变量名应该起的神秘一些,最好只有一个字母。 这样谁都无法通过简单的搜索找到需要的内容。

    类名和方法最好也使用一个字母来定义。如果你确实想定义一个正常点的名字,那就一直使用它吧 —— 记住,隐藏信息的最好方法就是频繁的使用它。 当重复使用相同名称(称为“面向对象的编程”)时,如果将圆括号和花括号放在新的一行,这将有助于提高代码的可读性,并且让队友在你的代码中寻找任何东西时,都得重温一下正则表达式。考虑一下吧:

    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)。那么下面的输出是:

    1. $alert = 1; 
    2. $аlert = 2; 
    3. echo $alert; 

    2?如果第二个 alert以西里尔字母"a"开头,则不可以!

    引用相关

    即使你非常正常的定义来一些东西,但并不意味着你不能以有趣的方式来使用它。主要的武器有:

    • eval()
    • 可变变量
    • 可变类,比如$strudels = "noodles"; $noo = new $strudels;
    • call_user_func()

    基本上任何将代码视为字符串的语言结构都是你的好朋友。

    1. // calling abc(); 
    2.     $z = 'A'; 
    3.     call_user_func($z .'bC'); 

    大写

    字母例子,函数方法名不区分大小写,滥用这个特点。

    1. function abc(){ 
    2.     echo "abc"; 
    3. AbC(); 

    另一方面,数组的健(key) 对大小写敏感,也滥用这个特点。

    1. $a['UseConvetionsOnlyTobreakThem'] = 1; 
    2. if (isset($a['UseConvetionsOnlyToBreakThem'])) { 
    3.     // ?? 大写 B !!1! 

    重写

    在不期望的情况下重写全局变量,尤其是超全局变量。尽早重写$_GET数组中的属性,多次重写,$_POST亦是如此。在$_REQUEST上做一些不起眼的重写作为点缀。如果是在WTF-ed上,你可以解释是在防止用户输入的 XSS 攻击、注入攻击以及其他的病毒攻击。

    控制结构

    使用、混合、匹配所有备选的ifwhileforforeachswitch语法。如果被问起来,所有的这些,请解释说你正在培训新员工学习真正的语言。

    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 2break 3 这样的代码存粹是为了娱乐,尤其是当混合了奇怪的缩进代码时。

    这是一个开始!

    这就是今天的全部。我希望你相信你自己也能做到,你也可以编写不可维护的代码。现在你的未来就在你的手中!当然,你也可以编写可读性比较高的代码,但是冒着被替代的风险。

    www.phpzy.comtrue/php/22418.htmlTechArticle一步步教你编写不可维护的PHP代码,编写维护php代码 译者注:这是一篇很棒文章,使用有趣的叙述方式,从反面讲解了作为一个优秀的 PHP 工程师,有哪些事情是你不能做的。请注意哦...

    相关文章

    PHP之友评论

    今天推荐