【分分五分快三邀请码】三十年软件开发之路:老码农的自我修养!

  • 时间:
  • 浏览:0
  • 来源:UU快3-UU直播

声明:本分分五分快三邀请码文来自于微信公众号 CSDN(ID:CSDNn分分五分快三邀请码ews),作者:Julio Biason,授权站长之家转载发布。

【CSDN编者按】“千帆过尽仍少年”,对于守护tcp连接员来说,保留技术初心、分分五分快三邀请码不断提升实力是夯实买车人的不二法则。而本文的作者,作为一名有着三十多年开发经验的“老”守护tcp连接员,就在本文中删剪总结了买车人哪些年踩过的坑和实践得出的真理,谈到了包括软件开发、团队工作、买车人成长等方方面面。相信阅读本文后,会帮助你成为更优秀的守护tcp连接员。

声明:本文已获作者 Julio Biason 翻译授权。

译者 | 王艳妮,责编 | 郭芮

以下为译文:

这是我 100 年来从事软件开发过程中所学到的一点实际经验,原因一点听起来愤世嫉俗,但都是我的切身经验之谈。

再次强调,一点内容真的是愤世嫉俗,一点则是对不同工作岗位的长期观察。

软件开发

先明确疑问,再现在开使写代码

原因你谁能谁能告诉我你你都还可以 避免的疑问是哪些,那你肯定就谁能谁能告诉我不你都还可以 要写些哪些代码。在编写任何代码刚刚,先明确地把应用守护tcp连接是要怎样工作的写下来。

“原因这么需求或设计,编程什么都 向空文本文件不断增加bug的艺术。”——Louis Srygley

有时,即使什么都 “电梯演讲”(指短时间内表述结果内容)这么长——用仅仅有几个多多 多自然段来描述什儿 应用守护tcp连接的功能——也足够了。

但会 我看着买车人的代码发呆,谁能谁能告诉我下一步该为什么我么我么做,着实往往是原因下一步刚刚 就还这么被定义出来。一般出現什儿 情况汇报,就原因是刚刚停下来,与同事们讨论一下了——原因重新考虑避免方案。

将步骤写为注释

原因你谁能谁能告诉我要怎样现在开使,请先用自然语言、英语或你的母语描述应用守护tcp连接的流程,但会 用代码填充注释之间的空白。比这更好的做法是:将每个注释视为有几个多多 多函数,但会 编写出能删剪实现其功能的代码。

Gherkin是帮助你了解期望(expectation)的好帮手

Gherkin是什儿 测试描述格式,它指出“鉴于系统处于特定情况汇报,当处于一点事情时,这是预期的后果”。即使你不使用任何能读取Gherkin的测试工具,它也会让我很好地理解应用守护tcp连接的预期效果。

单元测试很好,集成测试更好

在我目前的工作中,朋友儿只测试模块和类(例如,朋友儿只为视图层编写测试,但会 仅测试控制器层,依此类推)。它能让朋友儿了解到某一要素有这么出错,但处于问题对整体的观察——而集成测试测试了整个系统的行为,在这方面会表现得更好。

测试都还可以 让API更好

朋友儿在不同层次中编码:有几个多多多 多存储层,应该使朋友儿的数据永久存储;有几个多多多 多避免层,应该对存储的数据进行一点转换;有几个多多多 多视图层,它有关于数据不都还可以 要怎样被展示出来的信息......等等。

正如我所提到的,集成测试感觉更好,但会 单独测试不同层都还可以 让我更好地了解其API。但会 让我更好地了解要怎样调用东西:API是是否太僵化 了?是是否不都还可以 保留血块数据不都还可以 进行一次调用?

做你知道要怎样在命令行上运行的测试

也都是说命令行对于任何项目都怪怪的要,但会 当你知道运行测试的命令时,你就知道要怎样让测试的执行自动化起来,但会 让我在有几个多多 多连续的集成工具中使用哪些测试。

时刻准备好扔掉你的代码

什么都人在刚现在开使使用TDD(测试驱动开发,Test-Driven Development)时,一旦被告知朋友原因不得不重写什么都东西,就会变得很生气。

TDD“旨在”扔掉代码:越了解你的疑问,这么你就会越明白,无论你写了哪些,从长远来看都无法避免疑问。

什么都你不应该担心什儿 。你的代码都是一面墙:原因你不都还可以 永远抛下它,那也都是白白浪费了材料。当然这原因你编写代码的时间一去不复返了,但在等你现在对什儿 疑问有了更好的理解。

好的语言生来含晒 综合测试

都还可以 肯定的是,原因什儿 语言在其标准库中自含晒 几个多多 多测试框架——即使分分五分快三邀请码分分五分快三邀请码小得都还可以 了再小——这么与这么测试框架的语言相比,它周围的生态系统仍将拥有更好的测试,无论该语言的实物测试框架有多好。

未来思路是垃圾思路

当开发人员试图避免疑问时,朋友有还可以 试图找到什儿 辦法 来一下避免所有疑问,包括未来原因出現的疑问。

但现实什么都 刚刚 :未来的疑问永远不需要到来,你最终要么不都还可以 维护一堆永远不需要被删剪使用的庞大代码,要么得整个重新写,原因有一大堆屁用这么的东西......

避免你现在遇到的疑问,但会 避免下有几个多多 多,但会 再下有几个多多 多。直到有一天,让我发现哪些避免方案中显现出了什儿 固定的模式,但会 你不都还可以 真正地“一次性避免所有疑问”。

文档是写给未来买车人的情书

朋友儿都知道,为函数、类(class)和模块编写该死的文档是有几个多多 多痛苦的过程。但会 刚刚当你都看文档就能回想起来当时你编写函数时的思路,你就会明白将来文档能在关键时刻救你一命。

功能文档是份合同

当你以编写文档作为买车人编程工作的起始点时,你实际上是在签订合同(原因是跟未来的买车人):我知道你了什儿 函数要做这件事情,这么它就不都还可以 做这件事情。原因稍后你发现代码与文档不匹配,那你什么都 代码出了疑问,而都是文档出了疑问。

原因有几个多多 多函数的描述含晒 “和”,这什么都 不对的

有几个多多 多函数应该且仅应该做一件事,真的。当你编写函数文档并发现你写了“和”什儿 字的刚刚,这原因该函数不仅仅是做一件事。这么就不都还可以 将该函数分解为有几个多多 多独立函数并删除“和”。

并非 使用布尔型变量作为参数

当你设计有几个多多 多函数时,你原因会你都还可以 上加有几个多多 多flag——并非 刚刚 做。

现在,我不你都还可以 让我举个栗子:假设你有几个多多多 多消息传递系统,但会 有几个多多多 多函数都还可以 将所有消息返回给用户,称为getUserMessages。但有什儿 情况汇报是不都还可以 返回每条消息的摘要(例如,第一段)或删剪消息,但会 ,你上加有几个多多 多名为retrieveFullMessage的flag/布尔参数。

再说一次,并非 刚刚 做。

原因任何读你代码的人还可以 都看getUserMessage(userId,true)并想知道这里的true到底是个哪些意思。

让我将函数重命名为getUserMessageSummaries并使用刚刚 getUserMessagesFull或例如的东西,但每个函数只调用原始的getUserMessage为true或false——但会 类/模块实物的接口仍然是清晰的。

但会 一定“并非 ”在函数中上加flags / Boolean作为参数。

注意界面的变化

在底下几点中,我提到了重新命名函数的疑问,原因你能控制使用该函数的整个源头,那就是否否疑问,只不都还可以 搜索和替换即可。

但会 ,原因该函数实际上是由库公开的,这么你都还可以 了随便地更改函数名称。这将打破你无法控制的一点一点应用守护tcp连接,并惹恼买车人。

让我通过文档或一点代码功能创建新函数并将当前函数标记为已弃用,但会 ,经过有几个释放后,你终于都还可以 Kill掉刚刚 的函数了。

(让我做的有几个多多 多一点混蛋的举动是创建新函数,将当前函数标记为已弃用,并在函数开头上加有几个多多 多休眠,刚刚 一来使用旧函数的人会被迫更新。)

好的语言自带集成的文档

原因语言有买车人的辦法 来记录函数、类、模块或一点,但会 含晒 几个多多多 多哪怕最简单的文档生成器,你就都还可以 确切知道所有的函数、类、模块、库、框架都具有良好的文档了(都是说一定怪怪的好,但合适是比较好的)。

大多数情况汇报下,这么集成文档的语言,文档方面做得都是为什么我么我么样。

一门语言绝不仅仅是一门语言而已

编程语言就在等你写的、但会 能做事情的东西,但在特殊关键词以外它还有什么都别的东西:它有几个多多多 多构建系统,它有几个多多多 多依赖控制系统,它有什儿 使工具/库/框架互动的辦法 ,它有几个多多多 多社区,它有什儿 与人打交道的辦法 。

并非 仅仅原因什儿 语言容易使用就取舍它。永远记住,你原因原因什儿 语言的语法很简明而支持什儿 语言,但会 与此一块儿你也是在支持维护人员对待什儿 社区的辦法 。

但会 ,宁愿让应用守护tcp连接崩溃什么都 要哪些都是做

着实这听起来很奇怪,但即使在避免过程中上加了一点错误,什么都 要默默地捕捉到错误但哪些都是做。

Java中有几个多多 多可悲的常见模式是:

这看起来跟避免异常没哪些关系——除了重复了一遍,仅此而已。

原因你谁能谁能告诉我要怎样避免它,那就随它去吧,你早晚会知道它会处于哪些。

原因你知道要怎样避免该疑问,这么就避免它

与前一点相反:原因你知道哪些东西在何还可以 原因异常/错误/什儿 结果,但会 知道要怎样避免它,这么就请避免它吧。显示错误信息,尝试将数据保处于一点位置,将日志文件中用户的输入捕获到以便刚刚避免,但要记得避免它。

类型决定你的数据是个哪些东西

内存中什么都 一串字节序列;字节什么都 0 到 255 之间的数字组合;哪些数字的真正含义取决于语言的类型系统。

例如,在C中,值为 65 的char型变量原因是字母“A”,值为 65 的int型变量是数字65——避免数据时请并非 忘记什儿 点。这也是为哪些大多数人在用布尔型变量做加法以查看True的数量时时不时出错。

现在,我不你都还可以 展示一下我最近都看的有几个多多 多JavaScript里的例子:

原因你的数据具有模式(schema),请使用形状(structure)来保留它

你原因会你都还可以 使用列表(或元组,原因你用的语言允许句子)来保存数据,原因它很简单——比如说,都还可以 了 2 个字段。

但会 原因你的数据有几个多多多 多模式(schema),有几个多多多 多固定的格式——你应该每次都使用一点形状来保存它,不管是用struct还是class。

理解并保持cargo cult的辦法

“Cargo cult”是什儿 理念,原因买车人那样做了,这么朋友儿也都还可以 。大多数情况汇报下,cargo cult什么都 对有几个多多 多疑问的偷懒的避免辦法 :

“原因X刚刚 做了,朋友儿为哪些要考虑要怎样正确存储朋友儿的用户数据?”

“原因有某巨头公司是刚刚 存储数据的,这么朋友儿也都还可以 ”。

“原因有某巨头公司支持什儿 做法,那什么都 明什儿 辦法 很好。”

......

并非 管所谓的“合适的生产力工具”,你只不都还可以 尽力去push守护tcp连接

“合适的生产力工具”着实原因:对于某件事情,有几个多多多 多正确的工具和有几个多多 多错误的工具——例如,应该使用另外的什儿 语言/框架而都是当前的语言/框架。但每当我听到大家提到什儿 词时,朋友都是在试图推销朋友喜欢的语言/框架,而都是合适的语言/框架。

“正确的工具”比你想象的更明显

我知道你你当前的项目不都还可以 避免一点文本,我知道你你很想说“让朋友儿用Perl吧!”,原因你知道Perl在避免文本时非常强大。

但你漏掉了哪一点呢?你在有几个多多 多C的团队工作,每买车人会C,而都是Perl。

当然,原因它是有几个多多 多小的、“放进去去角落”的不起眼的项目,这么用Perl就都还可以 了——但原因它对公司怪怪的要,这么最好还是用C。

PS:你的英雄项目(本文稍后将删剪介绍)原因但会 而失败。

并非 跟你项目之外的事情纠缠

有时朋友会试图改变实物库/框架,而都是使用适当的扩展工具——例如,直接对WordPress或Django进行更改。

刚刚 很容易让我的项目秒瘫痪,变得无法维护。一旦发布了新版本,你就不都还可以 与主项目保持同步,但会 更快就会发现改动不再适用,你将把实物项目留在有几个多多 多旧版本中,且充满了安全漏洞。

数据流动比模式更重要

(再次说明,这仅仅是买车人意见)当你了解数据要怎样在代码中流动时,你的代码质量就会更上一层楼,这比无脑应用一堆设计设计模式(design pattern)好多了。

设计模式是用来描述避免方案的,但它都还可以 了找到避免方案

(同样,买车人观点)大多数刚刚我都看设计模式被应用的刚刚,它们被用作寻找避免方案的什儿 辦法 ,什么都你最终会扭曲有几个多多 多避免方案——但会 ,甚至是扭曲疑问什儿 ——来适应某个设计模式。

首先,避免你的疑问,找到有几个多多 多好的避免方案,但会 让我检查模式,以提供要怎样命名该避免方案的思路。

我时不时都看什儿 情况汇报处于:朋友儿有什儿 疑问;有几个多多 多设计模式接近正确的避免方案;让朋友儿使用什儿 设计模式吧;现在朋友儿不都还可以 在适当的避免方案基础上上加什么都东西以适应什儿 设计模式......

学习函数式编程的基础知识

你不需要都还可以 彻底玩转信用卡 “哪些是有几个多多 多单子(monad)?”和“这是有几个多多 多函子(functor)?”等疑问,但要知道都还可以 了时不时改变数据——使用新值创建有几个多多 多新元素(将数据视为不可变),并尽原因使函数/类不保留一点实物情况汇报(纯函数/类)。

认知成本是可读性的杀手

“认知失调”是什儿 高大上的说法,但着实意思什么都 “我不都还可以 一块儿记住有几个多多 多(或更多)不同的东西不都还可以 理解什儿 点。”把哪些不同的东西保留在你的头脑中会产生成本,但会 事物之间关联性越小,什儿 成本就越会不断积累(原因你不都还可以 把所哪些都记在脑子里)。

例如,将布尔值相加以计算True的数量什么都 什儿 轻微的认知不协调;原因你正在阅读一段代码并都看有几个多多 多sum()函数,你知道它是列表中所有数字的总和,你就预料到列表由数字组成,但我都看过朋友使用sum函数计算布尔值列表中的True的数量,这也太特么容易让我糊涂了吧。

Magical Number 7 ,正负二(7+- 2 的范围内)

“magical number”是一篇心理学文章中提到的概念,意思指朋友都还可以 在同一时间记住的事物的数量。原因你有几个多多多 多函数,它调用有几个多多 多调用函数的函数,该函数又调用有几个多多 多调用函数的函数……再往下说下去你原因要疯。

想一想:我会得到什儿 函数的结果,但会 将它传递给第有几个函数,得到它的结果,但会 传递给第有几个多多 多函数。但会 :

  • 当今,心理学家更多地谈论Magical Number 4,而都是7。

  • 把函数当成写作文(如“我将调用该函数,但会 该函数,但会 该函数......”),而都是函数作为主体(如“该函数将调用该函数,将调用该函数......”) 。

走捷径挺nice的,但什么都 在短期内这么

一点语言、库、框架都是缩短工作时间的辦法 ,减少了不都还可以 你打字输入的内容。但会 ,稍后,哪些东西会让我栽跟头,你将不得不弃用哪些捷径并懂得人间正道是沧桑的道理。

但会 ,在使用刚刚,先了解哪些捷径是要怎样做事情的。

你不需要都还可以 先用难的辦法 写东西但会 再用捷径的辦法 清理:你只不都还可以 走捷径在后台做事情,什么都你合适知道使用它原因出错的地方在哪里,以及要怎样用非捷径辦法 替换它。

抵制“轻松”的诱惑

当然IDE会帮助你完成血块的自动填充并让我轻松构建你的项目,但在等你明白处于了哪些吗?你了解你的构建系统是要怎样工作的吗?原因你不都还可以 在这么IDE的情况汇报下运行你的守护tcp连接,你知道该为什么我么我么做吗?原因这么自动填充你能记住你的函数名吗?是都是有辦法 打破/重命名一点东西让它们更容易被理解?......

要对窗帘底下的东西保持好奇。

时不时在你的日期中使用时区

避免日期时请始终上加时区。你的计算机时区生和熟产服务器时区(或其中有几个多多 多实例时区)将始终处于疑问,你将花血块时间来调试为哪些界面时不时显示错误的时间。

时不时使用UTF-8

在日期上出現的疑问,也将出現在对字符的编码上。什么都时刻记得将你的字符串转换为UTF8,将它们作为UTF8 保处于数据库中,在你的API上返回UTF8。

让我转换为任何一点编码辦法 ,但UTF8 赢得了编码战争,但会 更容易保持什儿 辦法 。

从笨辦法 现在开使

远离IDE的什儿 辦法 是“从笨辦法 现在开使”:只需获取编译器并获得有几个多多 多含晒 代码突出現示的编辑器(任何编辑器),做你该做的事情:写代码,构建它,运行它。

不,这并非 容易。但会 当你跳进某个IDE时,你都看某个按钮只会简单地想,“是的,它会运行它”(顺便说一下,这正是IDE所做的)。

日志用于事件,而都是用户界面

很长一段时间,我使用日志向用户显示正在处于的事情——原因,你知道的,使用单个东西会更容易一点。

使用标准输出通知用户处于了哪些事件,使用标准错误通知用户有关错误的信息,但使用日志来捕捉都还可以 在刚刚轻松避免的东西。

将日志想成在等你不都还可以 解析以便在那时从中提取一点信息的东西,而都是用户界面,它不一定什么都 让我看得懂的明文。

Debugger们被高估了

我常常听到什么都人抱怨,都还可以 了Debug的编辑器有多糟糕。

但会 当你的代码投入生产时,你无法运行你喜欢的Debugger;哎呀,你甚至都还可以 了运行买车人喜欢的IDE;但会 logging......logging随处都都还可以 运行......你原因在崩溃时这么所需的信息(例如,不同的日志记录级别),但让我启用日志记录以便稍后找出一点内容。

都是说Debugger们很糟糕,什么都 它们这么大多数人想象的这么有用。

始终使用版本控制系统

“这什么都 个随便写的破守护tcp连接,我只想学点东西”——这都是有几个多多 多不使用版本控制系统的好借口。原因你从一现在开使就使用版本控制系统,这么当你做了一点傻事时,撤销会更容易。

每次提交有几个多多 多更改

我见过朋友编写提交消息,如“修复了疑问#1,# 2 和#3”。除非所哪些疑问都是重复的——这么其中有几个多多 多应该原因不处于——它们应该分三次提交,而都是一次。

尝试在每次提交中只进行一项更改(但会 这里的更改并都是“有几个多多 多文件更改”; 原因有几个多多 多更改不都还可以 更改有几个多多 多文件,你应该将这其他人多多 多文件一块儿提交。想想“原因我还原什儿 步,那是哪些消失了?“)

当你过度交换时,“git add -p”在等你的朋友

(仅限Git的主题)Git允许使用“-p”要素合并文件,这允许你仅取舍相关更改并非 管一点更改——原因是为了新的一项提交。

按数据/类型组织项目,而都是功能

大多数项目的组织如下:

换句话说,它们使数据按功能分类组织(所有传入的模型都是同一目录/包中,所有过滤器都是同有几个多多 多目录/包中,依此类推)。

这很好,很有效。但会 当你按照数据进行组织时,将项目拆分到较小的项目中会更容易——原因在一点刚刚,原因你你都还可以 做的与你现在正在做的几乎一样,什么都 一点许小的差异。

现在,让我创建有几个多多 多仅避免Data1 的模块,刚刚 仅适用于Data2 的模块,依此类推,但会 你就都还可以 将它们分解为独立的模块了。但会 当你但会 项目都是Data1 但也避免Data3 时,让我重新用上Data1 模块中的大要素内容。

创建库

我原因见过什么都项目要么创建有几个多多 多含晒 不同项目的大型存储库,要么保留不同的分支,哪些分支不被用作刚刚加入主要开发区域的临时环境,而作为有几个多多 多小而不同的东西延续下去了(从上文讲到的模块化速率单位来说,请想象一下,我这么构建有几个多多 多重用Data1 类型的新项目,什么都 拥有几个多多多 多具有删剪不同的主函数和Data3 类型的分支)。

为哪些不将公合适素拆分出来加到库里并在不同的项目中应用它呢?

原因在于,大多数情况汇报下,“原因朋友要么是谁能谁能告诉我要怎样创建库,要么是朋友担心要怎样将哪些库‘发布’到依赖源中而不致泄露(但会 我知道你你也应该了解你的项目管理工具要怎样检索依赖项,以便让我创建买车人的依赖项存储库)。”

學會监控

刚刚 ,为了理解系统的行为辦法 ,我上加了血块的指标:输入速率单位、输出速率单位、底下滞留数量、已避免的数量......刚刚 都还可以 很好地了解系统的行为辦法 :速率单位在下降吗?原因是的,刚刚 都还可以 检查正在输入系统的内容以了解原因。在一点刚刚下降是是否正常?......

事实上,在此刚刚,试图查明有几个多多 多这么任何监控的系统有多健康就变得很奇怪,仅使用“是是否应答请求”来检查系统运行情况汇报不再适用。

尽早上加监控将促进你了解系统的行为辦法 。

config文件是个好东西

想象一下,你编写了有几个多多 多函数,你不都还可以 为它传入有几个多多 多初始值不都还可以 现在开使运行(例如,有几个多多 多推特用户帐户ID)。但会 要是你又不都还可以 用有几个多多 多值来做,什么都你就直接用刚刚 值再次调用了该函数。

使用配置文件更有道理,只需使用有几个多多 多不同的config文件运行应用守护tcp连接两次。

命令行选项很奇怪,但很有帮助

原因你将某样东西移动到config文件,你还都还可以 通过上加选项来取舍配置文件并公开它来帮助用户。

现在对要素语言的命令行选项都是一点库都还可以 避免,这将促进你构建有几个多多 多良好的命令行,并为你的用户提供有几个多多 多标准的接口。

不仅仅是功能组成,还有应用守护tcp连接组成

Unix自带“应用守护tcp连接只做一件事,但会 把它做好”的理念。

如今,我知道你让我使用有几个多多 多含晒 几个多多多 多配置文件的应用守护tcp连接,但会 原因你不都还可以 有几个多多 多应用守护tcp连接的结果呢?那时让我编写有几个多多 多应用守护tcp连接,用有几个多多 多配置文件读取第有几个多多 多的结果并转换为单个结果。

即使是做APP,也要从原始的东西现在开使

APP的开发原因会涉及微服务——这很好——但微服务不都还可以 一点关于应用守护tcp连接要怎样通过线路(协议等)在彼此之间“对话”的想法。你不需要都还可以 从那现在开使,应用守护tcp连接都都还可以 从文件中写入和读取,刚刚 容易多了。

当你了解了网络是要怎样工作后,再通过电话进行交谈时原因会担心的吧。

优化是面向编译器的

假设你不都还可以 更高的性能,你原因很都看看你的代码和“都还可以 在这里挤出更多性能的东西”或“要怎样在这里删除有几个循环来获得更多速率单位”。

好吧,猜猜为什么我么我么着?编译器知道要怎样做到什儿 点。智能化的编译器甚至都还可以 删除你的要素代码,原因它始终会生成相同的结果。你不都还可以 做的是为代码考虑更好的设计,而都是要怎样改进当前代码。

代码是为了让我类阅读的、优化面向编译器的,但会 ,找到什儿 智能的辦法 来解释你在尝试做的是哪些(在代码中)而都是使用更少句子语来表述。

通过懒惰(评估)

Lisp要是刚刚就这么做了,而现在大多数语言也但会 做的。

例如,Python有yield句子,它将停止当前函数的执行并立即返回值,都还可以 了在再次调用该函数时才会产生新值。原因你将使用yield的函数链接起来,则不需要都还可以 像保留返回列表的函数那样多的内存。

在团队/工作上

code review并都是为了彰显风格

花点时间进行code review,指出架构或设计疑问,而都是代码样式(风格)疑问。这么人真正喜欢哪些在code review中写“你在什儿 行中留下空白了”或“括号前缺少空格”的人。

现在,原因你着实发现了架构或设计疑问,这么让我顺便说一下代码风格疑问。

代码格式化工具还都还可以 ,但它们也都是无往不胜的

团队原因你都还可以 避免在code review中讨论样式,因而原因会考虑使用代码格式化工具在提交刚刚自动格式化代码。

是的,这要素避免了什儿 疑问,但会 还有几个多多多 多小疑问:朋友儿人类不像计算机那样能灵活地阅读代码,计算机可读的内容原因无法被人阅读。当然,大家试图在促进人类阅读的方面创造一点启发式辦法 ,但这并非 原因哪些辦法 正确。

原因你使用代码格式化工具,请使用它来找出最能更改代码的位置。你原因不都还可以 僵化 什儿 要素的代码,以避免它出現混乱。

代码风格:遵循它什么都 了

原因你的项目具有已被定义的代码样式,则不都还可以 遵循它。有时原因不清楚(“什儿 形状/类应该是单数还是复数”?),但请尽力遵循它。

...除非代码样式是Google Code样式

(删剪买车人观点,你不同意也没关系)每次谷歌发布买车人的编码风格,都是一场垃圾焚烧。社区刚刚采用了更好的风格辦法 ,谷歌带来有几个多多 多与此很不相同的的风格,什么都 为了能使其在买车人名下。

C / C ++都还可以 了什儿 编码风格:K&R

(再次,删剪买车人意见)一点所有编码风格都是错误的。(笑)

Python都还可以 了什儿 编码风格:PEP8

社区(大要素)使用PEP8 风格,遵循它,这么你的代码都还可以 顺利地生和熟态系统中的一点要素集成。

显式优于隐式

你知道哪些是有史以来最糟糕的函数名称之一吗?sleep()。

睡了多久?是几秒还是几毫秒?

对你使用的东西要表达地明确一点,sleepForSecs和sleepForMs并非 完美,但比有几个多多 多单纯的sleep更好。

(当你编写应用守护tcp连接命令行界面或其配置文件时,请考虑什儿 点。)

(我不你都还可以 在这里抛出整个“Python之禅”,但我正在努力专注于讲买车人的,直接的体验。)

公司你都还可以 专才,但全才在公司待的时间更长

原因你对单一语言了解什么都,这么它原因会让我更容易找到一份工作,但从长远来看,一门语言的使用原因会消失,你就不都还可以 再学一门别的语言了。适当了解一点门一点语言促进长远发展,更并非 这原因促进你想出更好的避免方案了。

“什儿 都还可以 了影响你对编程的思考辦法 的语言,不值得了解。”——Alan Perlis

很长一段时间,我遵循着有几个多多 多简单的编程规则:我在俺家 用来玩的语言不应该是我在工作中使用的语言。这使我不你都还可以 够接触到要是在工作代码库中应用的新内容。

我通过编写Rust代码了解了泛型要怎样在Java中工作;我理解了Spring要怎样完成依赖注入原因我刚刚有学过要怎样在C++中实现。

心含晒 用户

想一想你将要怎样使用你从用户那里挂接的数据——这在当今“隐私”变为什儿 奢侈的时代更为普遍。

原因你捕获任何使用数据,请记住保护它免遭未经授权的使用。

避免用户数据的最佳安全辦法 是压根不捕获它

让我取舍,在一点刚刚,数据会因一点安全漏洞或人为干扰而泄漏。原因你这么捕获任何用户数据——或以匿名辦法 存储——你将不需要遇到任何疑问。

记下来哪些“我不你都还可以 花了有几个多多 多多小时才避免的愚蠢失误”

我尝试过,但从未真正建成过有几个多多 多列表来记录哪些不都还可以 花有几个多多 多多小时不都还可以 修正的失误,什儿 失误仅仅是“忘了上加依赖”或“上加注释”一类,可我不止一次与哪些愚蠢的失误作斗争了。

但你应该尝试保留有几个多多 多列表来记录哪些让我花了有几个多多 多多小时才避免的愚蠢失误,原因有了它刚刚你避免起例如失误来要更更快。

原因它无法在你的计算机上运行,这么你都是麻烦了

我都看什么都系统永远无法在孤立的计算机上运行,比如开发人员工具,原因系统不都还可以 在专门的环境中运行。

这真的会扼杀生产力。

原因你的系统将在有几个多多 多专门的环境中运行——包括“云”——那就去找都还可以 抽象你所用之物的东西。例如,原因你使用的是AWS SQS(队列),请找到有几个多多 多都还可以 抽象队列工作辦法 的库,刚刚 你也都还可以 使用RabbitMQ了,就都还可以 在你买车人的计算机上轻松运行了。

原因你使用的是非常专门化的东西,你原因不都还可以 买车人编写抽象逻辑了,将其与主系统隔离,刚刚 你就都还可以 安心开发主要产品。