初学者 Web 开发人员的“清洁代码”
初学者 Web 开发人员的“清洁代码”
我的收获 “干净的代码” 经过 罗伯特·C·马丁 作为一名初级 Web 开发人员。
这里有什么适合初学者的?
在开始成为程序员的旅程时,有许多资源可用于了解有关编码和发现行业标准的更多信息。如果您像我一样来自非传统背景,那么您可能已经花时间研究可以帮助您填补空白的东西。这就是向我介绍“清洁代码”的地方。我想知道哪些书可以帮助我缩小学习编码与行业对有能力的开发人员的期望之间的知识差距。
这是一个非常技术性的阅读,可能需要比正常阅读速度慢的阅读速度,但如果您的目标是更深入地编写干净的代码并成长为一名开发人员,那么这是一个很好的起点。
这篇文章有什么内容?
这绝不是对本书的全面总结。我只是想在最终完成这本书后表达我的想法,并介绍为什么它对初学者来说是一本有价值的读物。我的主要收获将集中在我理解的主题和我觉得最有趣和最有帮助的概念上。
在这篇文章的最后,如果在你目前的学习水平上很难理解这本书,我会推荐读什么。我这样做是因为我相信从这本书中可以获得很多,如果你认为购买它是一种浪费,那就太可惜了!我希望您能阅读我的建议,不要被吓跑,以便您以后可以重新访问。
为什么要读这本书?
“清洁代码”是一个很好的起点,但不应被视为唯一的真理。正如作者所熟知的,“鲍勃叔叔”甚至亲自陈述了这一点!当你能够做到时,非常强调简单性、易读性和分解概念。同样,分解概念的想法延伸到在您编写代码并完成之后。作为一名 JavaScript 开发人员,我能够理解 Java 中提出的想法,但我相信真正理解还需要几年时间。我很高兴能读到最后一章,因为这意味着我终于征服了这本书的野兽,但后来我发现这意味着我将接触到本书主要内容的易于理解的摘要。 “清洁代码”有一些更高层次的概念,但也允许新开发人员(约 1 年经验)获得关于如何成为更好的开发人员的宝贵见解。
思想流派
在第一章的末尾有一节题为“思想流派”。如果在整个过程中更多地引用此特定部分,则可以解决经验丰富的开发人员对本书的大部分敌意和厌恶。但是,我认为 Bob 叔叔的工作不是提醒你他在开始时所说的话。
“确实,本书中的许多建议都存在争议。你可能不会同意所有这些。你可能会强烈反对其中的一些观点。没关系。” -罗伯特 C. 马丁,第 1 页。 13 干净的代码
这也是新开发人员理解和记住的重要内容。
编写可读代码
保持简单愚蠢
我注意到的一件事是,有些开发人员的目标似乎是用他们的智慧给每个人留下深刻印象。我在编码论坛中看到的最多,例如 堆栈溢出 和编码练习网站,如 代码大战 .在查看解决方案时,我发现有些人非常擅长抽象和编写尽可能少的代码。这可能会在计算机中节省一点内存空间,但会导致读者在脑海中使用大量自己的内存空间。
“读者不应该在心里把你的名字翻译成他们已经知道的其他名字。” -Robert C. Martin,清洁代码,第 1 页。 25
我最近看到一条推文,说一位开发人员需要 15 分钟来解决一个问题,因为另一位开发人员决定不写出变量的全名,而是使用缩写。该问题需要一个简单的解决方案,但也需要大量挖掘代码以了解该变量的上下文,这可以通过使用更好的名称来解释。作为初学者开发者,鲍勃叔叔最容易掌握的概念之一是命名。
有意义的名字
“将类型或范围信息编码到名称中只会增加额外的解密负担。要求每个新员工除了学习他们将要使用的代码体之外,还要学习另一种编码“语言”似乎是不合理的。” -Robert C. Martin,清洁代码,第 1 页。 23
花时间命名您的变量、文件、函数、文件夹等可以节省您和您的其他开发人员的时间。任何有团队经验的开发人员都可能感受到上述推文中描述的挫败感。更快地阅读和理解代码的最简单方法是编写有意义的名称来充分描述正在发生的事情。
常数 a = 10
常数 b = 0.085
常量 c = a * (1 + b)
这是什么意思?!我不会告诉你,我只会写更有意义的名字。
常量子总计 = 10
常量税 = 0.085
const billTotal= a * (1 + b)
无需我在此代码上写一段,您现在就知道我正在查找加税项目的成本。
长名称是可以的。如果您发现自己正在阅读“清洁代码”并查看所有示例,那么您会注意到他编写了一些相当长的函数和变量名称。虽然有许多概念,但您可以随意不同意这一点。在你的代码中明确,让任何人,包括你自己,一眼就能理解你的代码。
简单功能
另一个很早就出现并且更容易理解的概念是函数应该做一件事的想法。单一职责原则(SRP)告诉我们同样的事情。 SRP 与有意义的名称配对,可以更快地理解代码。
账单总版本 1
函数calculateBillTotal() {
常量项 1 = 10
常量项 2 = 12
常量项 3 = 8
const subTotal = item1 + item2 + item3
常量税 = 0.085
返回小计 *(1 + 税)
}
“函数的第一条规则是它们应该很小。函数的第二个规则是 它们应该比那个小。 ” -Robert C. Martin,清洁代码,第 1 页。 34
账单总版本 2
函数calculateSubTotal(itemsPurchased){
常量购买的ItemsAddedTogether = items.reduce((runningTotalOfItems, currentItemPrice) => {
返回 runningTotalOfItems + currentItemPrice
), 0} 退回购买的物品添加在一起
} 函数 addTaxToSubtotal(purchasedItemsSubTotal, salesTaxOfState) {
const currentSalesTax = 1 + salesTaxOfState
返回当前销售税
} 函数calculateBillTotal() {
const itemsPurchased = [item1, item2, item3]
const subTotalOfItemsPurchased = calculateSubTotal(itemsPurchased)
常量 billTotal = addTaxToSubtotal(subTotalOfItemsPurchased, 0.085) 退货单总计
}
第二个版本更长,可能比必要的更冗长,但读者不应该对特定变量存在的原因或函数应该具有什么输出有疑问。这 计算账单总额
函数用作收集计算账单总额所需信息的中心位置,而它调用的函数用于执行主要逻辑。命名还允许读者了解每行正在完成的工作。
重构你的代码
一次编写代码,然后在没有同行审查的情况下提交它,或者至少你自己是在询问错误和问题。当您一直在处理特定文件或文件组时,您可能会迷失在您尝试过但未能奏效的多个想法中。这可能导致永远无法撤消的更改和未使用的代码。通过休息并回来查看您的代码,您可以以更新鲜的眼光和更批判的心态回来,因为这不是您刚刚编写的代码。现在是可以更新代码以反映您的自豪感。
“如果你早上把一个模块弄得一团糟,下午就很容易清理了。更好的是,如果你五分钟前弄得一团糟,现在很容易清理它。
因此,解决方案是不断保持您的代码尽可能干净和简单。永远不要让腐烂开始。” -Robert C. Martin,清洁代码,第 1 页。 250
第 14 章逐次细化虽然读起来很困难,但它是一个很好的例子,说明如何使用好代码并保持批判性,这样你就可以使其更具可读性并更好地利用单一职责原则。 Martin 带领读者浏览一个代码模块,并在解释每个决定的同时逐节重构它。随着系统老化并保持其完整性,这种对代码的关心将给您带来回报。
我看不懂Java
我也是。
虽然不同编程语言的语法相似,但我可以说大部分代码对我来说意义不大。了解 TypeScript 是我可以阅读的代码的可取之处,但了解如何/为什么做出某些决定是我无法理解的。
希望本章可以帮助开发人员对无法阅读 Java 感到舒服,并让他们知道这本书仍然有价值。
第17章最有意义
在完成了所有的技术段落并筛选了我能理解的代码之后,我终于进入了最后一章。本章充满了关于如何编写代码来检查我们可读、简单和有意义的框的总结和启发式方法。在我学习了更多的语言并获得了更多的行业经验之后,我计划在多年后阅读这本书。在此之前,我将利用最后一章作为本书主要概念的快速参考。
如果您开始阅读本书,但没有任何意义,我建议您阅读第 17 章并阅读标题部分:注释、环境、函数、常规、名称和测试。在您获得更多经验之前,这些应该为您提供对本书内容的基本了解的良好起点。
最后的想法
“......但也许完整性不应该是目标,因为什么[规则列表] 确实做 是一种价值体系。事实上,这种价值体系一直是本书的目标和主题。干净的代码不是通过遵循一组规则来编写的。通过学习启发式列表,您不会成为软件工匠。专业精神和工艺来自推动学科发展的价值观。” -Robert C. Martin,清洁代码,第 1 页。 31 4
如第一章所述,这不是编写好代码的唯一方法,也不是确定“完美代码”的完整指南。这只是那些花了很多时间反思他们几十年经验的人的想法和意见的集合。它应该被认真对待,但不是唯一的真理。编写干净代码的方法是通过深思熟虑的重构,并考虑到开发人员没有你当时遇到的问题的上下文。这很容易通过考虑变量、函数、类等的名称来完成。我相信,即使您不会阅读 Java 或有多年的开发经验,您仍然能够从本书中找到价值。无论你的成长是来自对代码示例和围绕它们的描述的深入而缓慢的研究,还是通过跳到第 17 章并阅读我推荐的部分以获得更一般的理解,我希望这将引导你走上一条更清晰、更易读的道路代码。
布兰登的提示或报价:
今天我有个秘诀!
删除应用程序。 占用你所有时间的那个。不会为您的生活增添意义或没有积极影响的人。 删除它。
我发现自己看了几个小时毫无意义(虽然很有趣)的视频。我正处于我生命中的一个时期,我“说”对我来说非常重要的事情是获取知识并在计算机科学方面取得进步。但是,我向自己展示了我宁愿看视频。我决定这些应用程序必须离开。我删除了这些应用程序,并用更多的代码学习、代码编写和阅读来取代这个习惯。
放下手机去做一些富有成效的事情真是太自由了。我要补充一点,我的手机现在非常无聊,因为没有什么“有趣”的东西可以看,只是一些我不喜欢经常玩的游戏。
它还提醒我们,自律是我们变得更好的方式。所以,去吧,去做吧。那个会浪费你时间的应用程序? 删除。它。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通