首页 > 编程语言 >程序员修炼之道:从小工到专家阅读笔记6

程序员修炼之道:从小工到专家阅读笔记6

时间:2023-12-19 22:33:38浏览次数:41  
标签:改动 语言 重复 小工 正交 程序员 修炼 文档 代码

程序需要遵守的实用主义原则。

 

重复的危害:如果某个事物在代码中重复多次,就可能会在维护过程中带来问题,因为改动了一处而忘记改动另一处造成自相矛盾。这加大了维护难度。要遵守DRY原则,即Don’t repeat yourself。

重复通常由这些东西引起:

强加的重复,由文档或用户需求决定。这通常可以依照情况消除。需要重复表示的信息可以用元数据schema与代码生成器消除重复。注释与代码会重复,但实际上这种重复没有必要:注释不应重复代码中显而易见的东西,而应该表达更高级的东西。文档与代码也会重复,可以利用文档生成工具。有些语言会强加一些重复,这比较难解决,只能依情况而定,一些基本的技术是cpp中不要在其他文件中引用函数,而应该使用头文件。

无意的重复,由设计的疏忽造成,需要积极的检查和重构。如果为了性能需要违反DRY原则,记得将重复本地化,不要泄漏到模块外,并保持模块内行为良好。

无耐性的重复,可能造成远大于一时麻烦的痛苦后果。程序员要学会约束自己。

开发者之间的重复,需要加强开发者之间的沟通。

 

正交性:指系统各同层次的组件之间没有依赖关系,改变一个不影响另一个。如果系统不符合正交性,测试与维护会非常痛苦。而正交性的系统在出问题时更容易隔离修复,进行拓展时也不必改动已有模块,增加了生产力。

为了达到正交性,需要将团队分为几个清晰的小组分别工作,对系统进行模块化的设计。可以通过询问“讨论某个改动时需要设计多少人”判断小组分工是否正交,通过询问“改动某个模块背后的需求,会有多少模块受到影响?”判断系统设计是否正交。

引入第三方库时可能会破坏正交性,要小心不要使第三方库对整体代码造成改动。如果第三方库的接口存在问题,可以将第三方库用适合自己代码的方式进行封装。

编码也有可能破坏正交性,需要注意:使代码保持解耦,除了需要的功能不要暴露其它细节。避免使用全局数据。避免编写相似的函数。

对项目进行测试与debug也可以检查项目的正交性。如果测试或修正一个小模块会带来许多其它的影响,那么系统不够正交。

正交性同样适用于文档,文档内容与表达形式应该解耦。这让我想到了markdown……

 

可撤销性:许多需求会改变,许多政策会改变,所以编写项目时任何决策都应该可以撤销。项目结构应该保持灵活,不要依赖某个已有决策。

 

曳光弹:这个比喻有点晦涩。作者介绍了一种方法,编码之初先搭建一个大致框架,然后慢慢填充编码。这样既可以方便编码,又可以随时与用户沟通项目是否符合他们的需求。假如现有成果不符合需求,可以立马进行修改,而不必等代码基本固定时候再进行重构。

 

原型与便笺:不同于曳光弹,曳光弹在使用之后继续保留,只是逐渐“生长”成更完整的系统。原型是为了分析某个功能或需求建立的简化模型,将细节遮蔽以方便分析,用来找到最好的实现方式,然后便丢弃不用。如分析UI需求时先用绘图板确定最合适的UI,再用编码实现。

 

领域语言:任何领域都有自己的语言,如用于配制的语言,用于文档的语言,用于描述需求的语言。可以发展一种小型语言。小型语言分两种,配置语言方便解析但难以阅读,命令语言相当于小型的脚本语言,更近似于自然语言,但解析难度更高。小型语言可以是独立的语言,也可以嵌入高级语言的代码,方便直接执行。

标签:改动,语言,重复,小工,正交,程序员,修炼,文档,代码
From: https://www.cnblogs.com/xscya/p/17914988.html

相关文章

  • 《程序员修炼之道:从小工到专家》读后感十月篇二
    《程序员修炼之道:从小工到专家》第四章以“唯‘用’主义”为主题,深入探讨了实用主义在程序员成长道路上的重要性。这一章让我对实用主义有了更深刻的认识和理解,也让我更加注重实用主义在编程实践中的应用。这一章强调了实用主义的重要性。在编程中,我们不仅要追求技术的精湛,更要......
  • 《程序员修炼之道:从小工到专家》读后感十一月篇一
    《程序员修炼之道:从小工到专家》第五章的主题是“知易行难”,这一章深入探讨了程序员在实际工作中面临的挑战和困难,以及如何克服这些困难,实现从“知”到“行”的转变。这一章指出了许多看似简单的问题实则暗藏玄机,需要深入思考和实践才能真正掌握。在编程中,我们经常会遇到一些看似......
  • 《程序员修炼之道:从小工到专家》读后感十一月篇二
    程序员修炼之道:从小工到专家》第六章的主题是“整体把握”,这一章深入探讨了程序员在面对复杂系统时需要具备的整体把握能力和思维方法。这一章让我对整体把握有了更深刻的认识和理解,也让我更加注重在编程实践中运用整体把握的方法。这一章强调了全局思维和系统观念的重要性。在编......
  • 3-5年Android程序员的学习计划和职业规划
    前言对于已经在职场中摸爬滚打了3-5年的程序员来说,已经具备了一定的工作经验,掌握了一些专业知识,对于工作中的各种问题和挑战已经有了一定的解决方案。但是,随着科技的不断进步,行业竞争的不断加剧,不能一味地依靠过去的经验和知识,更要时刻保持学习的心态,持续学习新技术,积累新经验,以便......
  • 电脑备忘录小工具怎么添加?怎么在电脑桌面添加备忘录?
    作为一名天天用电脑办公的上班族,如果你需要对某个项目或问题进入深入思考,想要快速记录想法和思路,这时候会选择什么样的记事方式呢?如果你需要记录常用的工作文字内容、工作注意事项、项目流程、待办的工作安排等,用什么样的方式记录更便捷?越来越多的职场人士抛弃纸质的记事本,而选择......
  • 程序员早晚都得收藏的康复指南
    指南久坐的猿猿们很容易确诊颈椎病和腰椎间盘突出,属于高发人群。虽然工作也是为了更好的生活,但一定要把自己的健康放在首位。俗话还说“不听老人言,吃亏在眼前”,不管中没中招,不懂得收藏康复指南,等后悔的时候可就真晚啦!颈椎病康复指南颈椎病是指颈椎骨骼、关节、韧带、肌肉等组......
  • 程序员:如何做0-1的突破
      今天来跟大家分享一下,我们怎么样才能做一件有突破的事情。相信很多同学都熟悉,在工作里面不管作为一个新人还是开发骨干,甚至是技术的主管,都会面临一个问题,就是我们怎么样能够做出一个有突破的事情?这个问题我相信会困扰很多开发,甚至很多人在职业规划里面会陷入很多焦虑的地......
  • Unity3D 程序员常用的核心类及方法详解
    Unity3D是一款强大的游戏引擎,广泛应用于游戏开发领域。作为Unity3D程序员,掌握常用的核心类及方法是非常重要的。本文将详细介绍Unity3D中程序员常用的核心类及方法,并给出代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发......
  • 从一个程序员的角度看东方甄选“小作文”事件
    最近东方甄选“小作文”风波愈演愈烈,开始小编和观众吵架,后面东方小孙本来想要平息风波,而“摔手机”和泄漏董宇辉薪资待遇有激起更大的风波,导致东方甄选粉丝每天都几万,几十万的下降。作为一个消费者,开始是不太能理解东方甄选的这些骚操作。东方甄选最开始的热度是很低,基本没什么热......
  • 12月读后感从小工到专家
    在第九章中,作者强调了团队合作的重要性。作为一名软件程序员,你可能需要与其他成员合作,共同完成项目。为了成为一名优秀的团队成员,你需要具备良好的沟通能力、合作能力、解决问题能力和时间管理能力。沟通能力是团队合作的基础。你需要能够与其他成员有效地沟通,才能确保项目能够顺......