翻译
文章平均质量分 85
CodingLife99
这个作者很懒,什么都没留下…
展开
-
Comment Only What the Code Cannot Say 17
解释一段代码应该说什么的注释是对更改代码结构或编码约定的邀请,这样代码就不言自明了。您可以在代码中表达的内容和您想要表达的内容之间的任何不足都会成为有用评论的合理候选者。Kernighan和Plauger在《编程风格的元素》中指出,“如果注释是错误的,那么它的值为零(或负值)。代码库中充斥着嘈杂的注释和不正确的注释,这鼓励程序员忽略所有注释,要么跳过它们,要么采取积极措施隐藏它们。为了使代码库免受程序员独创性的误用,并降低忽略任何真正有价值的注释的风险,注释应该被视为代码。仅注释代码里没有交代的内容。翻译 2023-05-20 20:42:08 · 93 阅读 · 0 评论 -
thing_09
当然,如果该工具是早期发布的,或者全世界只有少数人使用,或者是一个很少下载的0.1版开源软件,那么可能有充分的理由怀疑该软件。因此,在你急于指责编译器之前,请记住夏洛克·福尔摩斯的建议,“一旦你消除了不可能的东西,剩下的东西,无论多么不可能,都必须是真相”,并更喜欢德克·温蒂的建议,即“一旦你消除了不可能,剩下的任何东西,无论如何不可能,一定是真相。质疑自己和他人的假设。然而,事实上,代码被编译器、解释器、操作系统、应用服务器、数据库、内存管理器或任何其他系统软件中的错误破坏是非常(非常)不寻常的。翻译 2023-05-20 20:40:07 · 84 阅读 · 0 评论 -
Do Lots of Deliberate Practice 22
过去二十年的研究表明,获得专业知识的主要因素是花在深思熟虑的实践上的时间。这意味着执行任务的目的是提高你对任务的一个或多个方面的掌握程度。直到你达到你想要的精通水平。彼得:“(发展专业知识)的关键是深思熟虑的实践:不仅仅是一次又一次地做,而是用一项超出你目前能力的任务来挑战自己,尝试它,在做的时候和之后分析你的表现,并纠正任何错误。付费开发的主要目标是完成一个产品,而深思熟虑的实践的主要目的是提高你的绩效。”而你的答案是“完成任务”,那么你并不是在刻意练习。刻意练习一些你已经是专家的东西是没有意义的。翻译 2023-05-13 19:13:05 · 92 阅读 · 0 评论 -
Distinguish Business Exceptions from Technical 21
换句话说,这种情况是合同的一部分,抛出异常只是一种替代的返回路径,它是模型的一部分并且客户应该意识到并准备好处理。对于这些情况,创建一个特定的异常或单独的异常层次结构是合适的,这样客户端就可以根据自己的条件处理这种情况。这种情况的一种变体是,当您处于“库情况”时,调用方违反了您方法的约定,例如,传递了一个完全奇怪的参数或没有正确设置依赖对象。相反,我们让异常上升到最高的体系结构级别,并让一些通用的异常处理机制尽其所能确保系统处于安全状态,例如回滚事务、日志记录和警报管理,以及(礼貌地)向用户报告。原创 2023-05-13 19:11:57 · 530 阅读 · 0 评论 -
Deploy Early and Often 20
虽然与在开发人员的笔记本电脑上运行应用程序相比,“能够部署”在早期似乎没有太大的业务价值,但简单的事实是,在您能够在目标环境上演示您的应用程序之前,在您实现业务价值之前,还有很多工作要做。调试部署和安装过程总是被推迟到一个项目快要截止的时候.在一些项目中,写安装工具被委托给发布工程师,他将承担这项任务作为一个不可避免的灾祸.回顾和展示用一个手动的环境来做,以确保每件事情是起作用的.如此这般,整个团队在部署过程或者部署环境中获得不了经验,直到太晚去改变的时候.作者Steve Berczuk。翻译 2023-05-13 19:11:15 · 75 阅读 · 0 评论 -
Convenience Is not an -ility 19
下一次,当您试图将一些东西合并到一个API方法中时,请记住,英语中没有一个单词表示MakeUpYourRoomBeQuietAndDoYourHomeWork,即使对于这样一个频繁请求的操作来说,它看起来确实很方便。这个方法可能是为了实现者的方便而设计的,而不是为了调用方的方便-“我不希望调用方必须进行两个单独的调用”翻译成“我不想编写两个单独方法的代码”。大多数有经验的程序员都知道,一个好的API遵循一致的抽象级别,表现出一致性和对称性,并形成表达性语言的词汇表。作者Gregor Hohpe。翻译 2023-05-09 23:40:30 · 63 阅读 · 0 评论 -
Continuous Learning 18
随着开发在全球范围内的分布,你会发现有很多人能够胜任你的工作。否则,你将成为一只恐龙,被困在同一份工作中,直到有一天,你不再被需要,或者你的工作被外包给了一些更便宜的资源。如果能拥有尼奥在《黑客帝国》中的能力,只需将我们需要的信息下载到我们的大脑中,那就太好了。总是试着和导师一起工作,因为成为顶尖的人会阻碍你的教育。虽然你可以从任何人那里学到一些东西,但你可以从比你更聪明或更有经验的人那里学到更多。分支给你新的想法,你可以在当前的技术堆栈中使用。在网上找到你真正喜欢的作者和开发人员,阅读他们写的所有内容。翻译 2023-05-09 23:39:29 · 58 阅读 · 0 评论 -
thing_14
代码评审的目的不应该只是简单地纠正代码中的错误,而应该是共享知识并建立通用的编码准则。确保评论是建设性的,而不是刻薄的。在评审会议中引入不同的评审角色,以避免团队成员中的组织资历影响代码评审。角色的例子可能包括让一个评审员专注于文档,另一个关注异常,第三个关注功能。他们可能缺乏经验,但他们新鲜的大学知识可以提供不同的视角。如果团队有通过工具检查的编码约定,那么代码评审将更容易进行。这样,在代码评审会议期间就永远不会讨论代码格式了。让它成为一个非正式的代码评审,其主要目的是在团队成员之间共享知识。翻译 2023-05-03 21:34:43 · 51 阅读 · 0 评论 -
thing_13
格式化程序无法理解我的意图(我应该知道,我曾经写过一个),对我来说更重要的是,换行和分组反映了代码的意图,而不仅仅是语言的语法。人们真的很擅长视觉模式匹配(这是我们不得不在大草原上发现狮子时的遗留问题),所以我可以通过标准化来帮助自己,让所有与该领域不直接相关的东西,以及大多数商业语言所带来的所有“偶然复杂性”,消失在背景中。几年前,我在一个Cobol系统中工作,在这个系统中,工作人员不允许更改缩进,除非他们已经有理由更改代码,因为有人曾经让一行滑到一行开头的一个特殊列中,从而破坏了一些东西。翻译 2023-05-02 23:23:59 · 96 阅读 · 0 评论 -
thing_12
如果一个设计失败了,没什么大不了的——只要找出问题所在,让我们的神奇机器人再制造一个。最后,有一个不可避免的事实:伟大的设计是由致力于掌握自己工艺的伟大设计师创造的。我们现在面临设计危机:对高质量、经过验证的设计的需求超过了我们创造它们的能力。随着建筑成本的消除,一家能够快速完成设计的公司在市场上获得了优势。不可避免的是,对设计不太熟悉的人会看到一个未经验证的版本,看到提前发布的市场优势,并说“这看起来足够好了。所有这些都指向了一个惊人的违反直觉的结论:我们的唯一前提是大幅降低建筑成本,结果质量变得更差。翻译 2023-05-02 23:21:31 · 61 阅读 · 0 评论 -
thing_10
我还倾向于通过接口和分层的方式将外部工具与我的业务领域对象隔离开来,这样我就可以在必要时更改工具,只需付出少量的痛苦。这种方法的一个积极副作用是,我通常最终会得到一个较小的应用程序,它使用的外部工具比最初预测的要少。不同的工具可能依赖于对其上下文的不同假设,例如,周围的基础设施、控制模型、数据模型、通信协议等,这可能导致应用程序和工具之间的架构不匹配。例如,在一些公司,使用根据GNU许可条款许可的软件是不可接受的,因为它具有病毒性,即使用它开发的软件必须与其源代码一起分发。工具数量越多,问题就越严重。翻译 2023-05-01 17:08:44 · 117 阅读 · 0 评论 -
The Boy Scout Rule(97 Things Every Programmer Should Know 8/97)
当然,这意味着添加到模块中的任何代码都必须是干净的。”如果你发现地上一团糟,你就把它清理干净,不管谁可能把它弄得一团糟。事实上,球探之父罗伯特·斯蒂芬森·斯迈斯·巴登·鲍威尔写的这条规则的最初形式是“试着离开这个世界,让它比你发现的好一点。如果我们在代码中遵循类似的规则:“提交一个模块的代码的时候,总要让它比下载的时候更简洁一些。”无论原作者是谁,如果我们总是做出一些努力,无论多么微小,来改进模块,该怎么办。我认为,如果我们都遵循这个简单的规则,那么就再也不会见到我们的软件渐渐腐化。翻译 2023-04-29 23:52:16 · 67 阅读 · 0 评论 -
Beware the Share小心分享(97 Things Every Programmer Should Know 7/97)
事实上,系统的两个截然不同的部分以相同的方式执行某些逻辑,这比我想象的要少。这四行类似的代码是偶然的——一种时间上的异常,一种巧合。当我完成我的第一个功能时,我格外小心地把我学到的一切都准备好了——注释、日志记录、尽可能将共享代码提取到库中,这些都很有效。我觉得已经做好了准备的代码审查来了,这是一个粗鲁的觉醒——重用是不受欢迎的!这些依赖关系的上下文是至关重要的——如果它们被本地化,它可能是合理的,并具有一些积极的价值。我读过的所有文章,课本,教过我的经验丰富的软件专业人士。作者:Udi Dahan。翻译 2023-04-29 23:40:19 · 62 阅读 · 0 评论 -
《左耳听风》-ARTS-打卡记录-第二十四周
坚持不懈是一句正确的废话。前段时间,我在我的读者群中发起了一个名为 ARTS 的活动。每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。我希望大家可以坚持一年,但是我也相信,能够坚持下来的人一定很少,绝大多数人都是虎头蛇尾的,但是我依然相信会有人坚持下来的。——陈皓《左耳听风》98 | 高效学习:深度,归纳和坚持实践Algorithm上周的二维数组查找元素的效率比较低,今天来学习下.原创 2021-09-17 21:11:49 · 241 阅读 · 0 评论 -
Before You Refactor在你重构前(97 Things Every Programmer Should Know 6/97)
Before You Refactor文章链接:Before You RefactorAt some point every programmer will need to refactor existing code. But before you do so please think about the following, as this could save you and others a great deal of time (and pain):在一定意义上讲,每个程序员都需要重构已有的翻译 2021-09-15 19:29:33 · 120 阅读 · 0 评论 -
Beauty Is in Simplicity大美至简(97 Things Every Programmer Should Know 5/97)
Beauty Is in Simplicity文章链接:Beauty Is in SimplicityThere is one quote(语录,引用) that I think is particularly good for all software developers to know and keep close to their hearts:Beauty of style and harmony and grace and good rhythm depends on simplicit翻译 2021-09-06 00:03:30 · 267 阅读 · 0 评论 -
Automate Your Coding Standard 自动化你的编码规范(97 Things Every Programmer Should Know 4/97)
Automate Your Coding Standard自动化你的编码规范You’ve probably been there too. At the beginning of a project, everybody has lots of good intentions — call them “new project’s resolutions.” Quite often, many of these resolutions are written down in documents. The翻译 2021-03-23 19:52:03 · 165 阅读 · 2 评论 -
Ask “What Would the User Do?“问自己“用户将会做什么?”(97 Things Every Programmer Should Know 3/97)
Ask “What Would the User Do?” (You Are not the User)We all tend to assume that other people think like us. But they don’t. Psychologists call this the false consensus bias. When people think or act differently to us, we’re quite likely to label them (subc翻译 2021-03-14 21:00:59 · 130 阅读 · 0 评论 -
Apply Functional Programming Principles运用函数式编程原则(97 Things Every Programmer Should Know 2/97)
Apply Functional Programming PrinciplesFunctional programming has recently enjoyed renewed(再次兴起的) interest from the mainstream programming community. Part of the reason is because emergent(新兴的) properties of the functional paradigm are well positioned to翻译 2021-02-23 00:21:53 · 130 阅读 · 0 评论 -
Act with Prudence谨慎行动(97 Things Every Programmer Should Know 1/97)
文章链接:Act with PrudenceWhatever you undertake, act with prudence(谨慎) and consider the consequences" AnonNo matter how comfortable a schedule looks at the beginning of an iteration, you can’t avoid being under pressure some of the time. If you find yours翻译 2021-01-29 19:38:51 · 171 阅读 · 0 评论