查看原文
其他

忘记整洁代码吧,来开发有同情心的代码!

21CTO 21CTO 2020-11-17

21CTO导读:你的爱在哪里?看看这位以前顽固的代码洁癖者——Clean Coder,现在摇身一边转变了思路,他提出一种有富有同情心的代码。现在我们就看看他讲的如何遵循编码和同情心原则的。



当你的英雄欲开始表现得有点过份,跑偏时,希望会重新审视这些对你生活的影响,做不好会影响家庭等方面。


我本人这些一直在学习和实践,透过TDD,设计模式等来演示和教授写整净的代码。但是,当我回顾过去的时光,我现在非常担心这些想法会对其它人的生活和工作产生一些负面的影响。


很多认识我的人大都认为我是一名技术娴熟的骨灰级程序员。我之所以成这样,是因为我经常在晚上研究编程技巧和实践技术,还有写技术书籍。在公司里,我经常挑剔一些最终没啥意义的代码,常常比同事晚1-2个小时离开办公室。我不太常和家人孩子共度晚上和周末时光。我像鸵鸟一样深深扎进了工作,只关心别人是不是在干净的代码,它是不是写得比我强,如果不是我还得指导一番。


在我的职业生涯中,一些不愉快的经历就是因为对某些小伙伴编的某些代码好坏产生分歧。我当时的希望,如果我们团队中某一个人在大多数情况下坚持代码的纯度,那么我认为TA是可以成为好朋友的技术大牛,这些让我感到不孤单。


后来我看到团队之间存在一些冲突,一部分就是因为对程序员的工作有不同的期望,这通常是由整洁代码的想法引起的。


随着年龄的增长,我学会了不对“整洁”代码感到不爽。


在任何现实世界的代码库中,都会有无数个性化的代码怪癖,奇数和结尾。这其实没有太大关系,事情就是这样,因为他们现实就是这样。人们为需求做了他们所做的事,这些代码最起码是有效的,不论是因为周围需求发生了改变,还是因为开发人员经验不足,可能是因为他们想回家而不是坐在办公室后面,或者他们对什么是好代码有不同的看法。


我有时会训练技术团队进行TDD,增量设计,代码重构甚至结对编程,我花大量时间帮助团队以更建设性的方式弥合人们的分歧,阅读整洁代码的人通常最容易受到此类冲突的影响。


为什么我会提这些?因为整洁代码的守则作为指导原则无益上周末定的计划有什么明显缓解。原因很简单:当我们遵循原则或规则而不反思它对自己和他人的影响时,就会误入歧途。罗伯特(鲍勃叔叔)马丁是整洁代码书的作者和着名的开发人员和培训师。他经常写一些文章,誓言捍卫和保护专业的荣誉,提出不做TDD的各种理由。很长一段时间以来,人们对这种“荣誉”,“义务”和“专业精神”的语言产生了一种啰嗦的感觉。


我个人喜欢以测试为导向的开发,我将其视为一种更有趣的开发方式。我支持开发者拒绝非正式的需求,我也同意鲍勃叔叔所有关于这些的具体观点。


当他写的一些东西,我不同意见时,关于清洁代码的预感才会变得清晰。我看到鲍勃叔叔含蓄地谴责违反戈德温法律的行为。在接下来的日子里,鲍勃叔叔反击他的批评者,并强调他个人认为软件开发情况很可怕,“但......”并不像“不和谐地”将其他人与纳粹分子一样看待。我认为他的优先事项存在重大错误的。我回复给他说:“根据@ unclebobmartin最近的文章,像整洁代码这样的想法已经开始在我的嘴里产生一种不好的味道。让我们只说”代码“,呃?我正式制定”脏代码星期一“来记住质疑的教条,部落主义和事前人的心态。“鲍勃让我解释“为什么你决定抵制清洁守则的概念”。


我对他在政治问题上的立场不同不持什么意见。我尊重集体比个人命运更高的规则和原则。我不认为自己的规则更重要,回到代码上来考虑:我们应该使用TDD,因为这是一项专业义务。我使用TDD时,它让我的工作更愉快。我认为不需要重构代码,因为它违反了SOLID原则。相反,我有时会形成一个原则来理解为什么某些代码很难改或难以理解。我不想因为写非整洁代码而羞辱伙伴。相反,我相信人们在平等之间进行诚实的对话,关于我们希望代码看起来是什么样的,我不相信专业性应该迫使所有代码引入测试过程。相反地,我认为我们应该优先考虑修复哪些缺陷,以及允许哪些代码怪物在代码库中能够实现自己的生活。


我现在已经接受项目中不整洁的代码,因为在战争中产生的伤疤值得骄傲,我们要持续谦虚,没必要感到羞耻。


Siggberg说道:如果你的敏捷变革只有一个目标,那应该是”少做无聊的事情“当清洁代码成为不那么无聊的工作的源头时,我就是为了它。当它成为沮丧和内疚的根源时,我就会反对它。


对我来说,极限编程的思想给我的职业生涯和团队带来了最大的快乐,关于整个团队的想法,关于结对编程以及关注用户体验。鲍勃叔叔承认编程实践的这些元素,但几乎没有谈论如何做得好。我并不同意他说的这些优先事项。当鲍勃叔叔提名我为“抵制整洁代码”的领导者时,我想我应该尝试用深刻的东西结束它。


如何了解你最有价值的技能,是知道什么是重要的。代码并不重要。原则并不重要。规则并不重要。人很重要。这意味着您的用户,您的团队,您的家人,您自己。引用Joshua Kerievsky的“现代敏捷”中的一句:“让人们感到非常棒”,整洁代码有可能有助于也可能损害目标。我们要学会看到差异。


编译:飞花逐月



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存