<code class="language-text"> Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
</code> 登录后复制
你就正常写。
这个话题,我敢肯定不少开发者有思考过!但毕竟不是什么光明正大的事情,自己做就是了,在项目高调使用就傻逼了。或许楼主不是这样的,只是想拿出来消遣一下大家,找个话题来让大家发挥罢了。
既然是消遣,我就谁便聊聊。
(
明确一下,以下当我用到“ 码农”来描述时,它是一个贬义词。) ----------------
我认可人性是自私,因此,有码农会这么做。 而我的意思则是,
别把自己太当回事,这世界不会离开了谁就不转了! “因为没人能搞定你的代码,那意味着你的工作是不可替代的,谁也取代不了你。你找了个铁饭碗。”这是一个伪命题,码农自己的意淫。
ok,我假设存在不可维护的代码。
请问这样的代码还是得由你来维护吧?也就是说,还是有人来维护的,只是别人维护起来不太合适或不太方便而已。既然这样,
按我们这一行的规矩,领导是不在乎你用什么方法和技术的,只会给一个截止时间让你来完成 ,对吧?
在这种情况下,这样的代码会只会让你陷入毫无节制的无谓的加班。除非这个项目不重要,但又需要有人来维护,那么确实可以获得某种相对稳固的饭碗。但不重要的项目,谁会花高价请一个码农来维护呢?不会太高的,企业不会是傻子!
然而,人又是需要往高处走的,毕竟这个社会很现实,谁也不会跟钱有仇。
很难维护的代码最后只能让你越陷越深,最后要么自己滚蛋,要么继续拿着差不多的薪水,如果 这就是你想要的铁饭碗,那么我就无话可说了。 请问这种事情你会干吗?
很多码农自己总是认为自己最聪明,能写出一些相对难维护的代码就以为自己在智商上高别人一筹,别那么天真好吗?™的好多码农就是这样,以为能写个程序就装逼,总以为别人是傻逼。 好吧,假设普通码农智商只有120,而你是130甚至140以上,请问这种差别在做人做事上会有本质的差别吗?
其实啊,
正常人的智商都差不了太多的,对于别人不可以维护,意味着你维护起来也不太容易。同理,你维护起来容易的,别人就不会太难 ,只要开发经验差不多,熟悉只是多一点点时间而已,因而不存在绝对维护不了的代码,只是不太愿意去维护罢了,别自我意淫——“我的代码不可维护”可以吗?
的确,我不否认存在很难维护的代码,但是如果一个人要是以这样的心态去书写代码,他的修为一定是有限的,因为代码能力和程序造诣需要大量的项目去实践。
或许,一两个项目没有人发现你是这样的心态,但我相信能够大多人或项目一定存在能识别这种鬼魅伎俩的人存在,而且一定不少。因此,重要的核心的项目会让这样的人去负责吗?或者,只让你一个人去负责吗?
这是不太可能的。如果不能有太多的机会独立去实现那些重要的核心的项目,请问你的代码修为又怎么提高呢?如果你是天才,天生就牛逼,请问这样的你又何必写不可维护的代码呢?
所以,正真牛逼的程序开发者是不屑于去书那些“写不可维护”的代码的!因为这对他自己没有任何好处!
-----下面讲一个我碰到码农的故事-----
时间在2014年10月份,我负责一个电商项目招了一个1977年出生的老码农,本来不太想要他的,因为传统项目出来的,但我觉得他的项目经验还可以,而且进度有点儿紧,所以就要了他。
当然,一开始的时候我安排给他的事都能顺利完成,但是却总是有些做法让人不能接受,比如使用aaa,bbb,ccc,zzz这样的变量名。当然,这也是我们没有做好规范,而且自己身上还一大堆业务要亲自去写,发现这样的问题后就他为什么要这样做?
回复就是,时间赶,先实现逻辑再回来改。好吧,这是事实。我认了,进度确实很赶,自己都自身难保,先过了吧。
就这样项目上了线,1个多星期赶一个交互比较复杂的电商侧边栏项目(天猫、VIP、聚美等电商右侧那个黑色工具条)。当我回头看他实现的那部分代码,虽说说不上不可维护,但确实很难改,因为很多没有意义的变量名,一会儿驼峰一会儿蛇线,还有很多没有注释的高度抽象的函数(如果有兴趣,我可以发一份给大家瞅瞅),截个图证明一下,这已是我重新格式化后的代码了:
对了,这不是php,而是前端js,不过大家都是玩代码的,不可维护的道理是一样的。再补充一下,当时的我做了4年开发(php2年多3年的样子,前端是1年多不到2年),那时已转专职前端开发,负责的是某垂直电商的前端架构;那家伙是超过10年的老码农,绝大多是时候PHP+前端混合开发(老资格的程序员大多是这种情况,我做php那会儿也这样),招进来是前端岗位。
对了,这不是php,而是前端js,不过大家都是玩代码的,不可维护的道理是一样的。再补充一下,当时的我做了4年开发(php2年多3年的样子,前端是1年多不到2年),那时已转专职前端开发,负责的是某垂直电商的前端架构;那家伙是超过10年的老码农,绝大多是时候PHP+前端混合开发(老资格的程序员大多是这种情况,我做php那会儿也这样),招进来是前端岗位。
我把他招进来是看到他多年的开发经验,就没再细看他做的代码,或者说觉得没必要没要看原来的代码,就这样进来了。而且,价格很便宜,转正9K,试用期7.5K。别误会,这是他自己开的价格,我立马找HR确认了这个价格,让他赶紧把人弄过来,10年以上的程序开发经验只要白菜价,这等好事哪里找啊?
但是,和他合作了一个项目之后,我后悔了。当时他试用期还没过,我是想把他开掉了,但是找不到人来负责,我自己有一大堆杂事,只好又忍了。其实,从这点上看,我™的也不是什么好鸟,反正工资又不是我开,那些个烂代码又不想自己去弄,项目上线后公司又给我升职又加薪的,懒得烦这个问题,就这样让他混过了试用期。
但是,这个项目到了2015年后,投资人打算撤资,于是团队面临解散。我们核心的技术团队和市场团队找到了新的投资商,重启了一个品牌和域名继续干。我依然负责前端架构和新项目的发版流程设计,但这个10年的码农是唯一一个被剔除出局的,后来就没再直接联系。有同事说,他后来加入了一个新公司,薪水翻翻,但不到1个月就被开掉了,不知道什么原因。
好吧,这就是书写无可维护代码的码农的故事。绝对真人真事。
说实话,后来我自己重新实现了一遍他的业务,其实没什么难度。经过这个事情之后,我现在负责的项目,如果有发现这样的人,不管他多牛逼,我一定不会忍。就今年国庆前吧,我们的项目就有一个15K的前端,能力不错,就因为又类似的代码迹象,就在项目攻关双节大促前夕,我依然把人开掉了,杀鸡给猴看。
当然,我不知道为什么有人做了10年的开发都可以忍受7-8K的薪水,而我™一个2年多的前端少于30K是绝对不干的,就因为从来没有想过书写别人难以维护的代码,而是希望当我请假的时候,项目中能力最弱的那个人也能修改我出产的代码。
就这样,你可以说我吹牛,不爽就喷我。又不会少收RMB,股份期权又没少掉,喷吧。
------------------
好了,你可以继续研究不可维护的代码,我也就随便说说,你别当真。
然后过了一段时间,自己也看不懂了
如果我是老板,碰到这样的员工,我宁愿下血本换人重构,也要把你开除了
那你应该用 perl(
不要为变量和函数随便地取名!!!
正确的姿势应该是:
1.认真地为它们取好名字
2.互换一下它们的名字
这样的破坏力绝对大!比乱取名还厉害!
哈哈哈!想想都醉了!!!哈哈哈
不可维护的代码写起来并不难,但是:如果老板让你在现有的功能想加一个功能的时候,请问你怎么来维护自己的代码?
另外,你这样做,当老板把你送上法庭的时候,你可能发现,你欠下的债,是你一辈子都还不清的。
===============2015年10月13日更新==================
对不起,我对我之前不负责任的言论道歉。
如果想写出不可维护的PHP代码的话,请参考Discuz!
这是我今生见过的最著名的,开源,且几乎不可维护的PHP项目了。