首页 > 编程语言 >读书笔记 程序员修炼之道

读书笔记 程序员修炼之道

时间:2023-04-23 14:13:12浏览次数:29  
标签:读书笔记 重复 资产 代码 复用 正交 程序员 修炼 开发者

我们看到过整洁、运行良好的系统,一旦窗户开始破裂,就相当迅速的恶化;
不要留着破窗户不修;发现一个bug就修复一个,如果没有足够的时间进行恰当的修理,就用木板先订起来;或许你可以先把代码注释起来,或是显示“未实现”的消息;采取某种行动防止进一步的损坏,并说明情形在你的控制之下;

投资知识资产

我们喜欢把程序员所知道的关于计算机技术和经验视为他们的知识资产;
你的资产是有时效的资产,会随着新技术、语言和环境的出现而变得过时;
管理知识资产与管理金融资产非常类似:

  1. 严肃的投资者定期投资-作为习惯
  2. 多元化是长期成功的关键
  3. 管理风险;聪明的投资者在保守的投资和高风险的投资之间平衡他们的资产;
  4. 应周期性的重新评估和平衡资产

投资建议:
每年至少学习一种新语言;
每季度至少阅读一本技术书籍;
也要阅读非技术书籍;

多交流,会交流

与他人交流时,你需要了解你的听众:
你想他们学到什么?
他们对你讲的什么感兴趣?
他们有多富有的经验?
他们想要多少细节?
你如何促使他们听你说话?

遇到程序Bug时,不要一味的指责代码编写者;我们需要的是修正问题,而不是发出指责;

DRY -不要重复你自己

don't repeat yourself;
系统中的每一项知识都必须具有单一、无歧义、权威的表示;
重复的发生地方:
开发者没有意识到重复;有时,重复来自于设计中的错误;
开发者偷懒、他们重复,因为那样代码似乎更容易修改;
开发者之间的重复:同一团队中几个人重复了同样的信息;处理这个问题的最佳方式就是鼓励交流;一定要阅读他人的代码,并进行代码review;

让复用变得更容易!
你需要营造一种环境,在其中找到并复用已有的东西;如果不容易,大家就不会去复用;而如果不复用,就有了重复的风险;

维持正交性

正交:两个事物中一个发生变化,对其他无影响,这两个事物就是具有正交性;
正交性的好处:

  1. 提高生存率;
  2. 降低风险

让代码维持正交性,可以消除无关事物之间的影响;

可撤销,可更换

不存在最终的目标,也没有终极的架构;项目的任何一个模块一个组件都是可撤销,可替换的;不要过度依赖于某个第三方的产品,否则你的项目就被第三方绑架了;
通过灵活的架构,将第三方产品隐藏在良好的抽象接口之后;

无处不在的自动化

多用python、shell等脚本语言,将工作的重复性任务自动化实现;
对于编程中的重复性代码,通过脚本自动生成代码来实现;
在工作中多总结,提炼小系统,让流程、代码都自动化;
linux下的cron是个好东西,让你的自动化任务都在夜深人静时准时执行;

不要靠巧合编程

你所写的代码都是深思熟虑过后的产物,先有设计,然后再产出;想到一处写一处是刚毕业的水平;
按照合约编程,别想着这个地方可以增加多少好功能,画蛇添足的故事太多,过多的超过用户期望未必有好的结果,可能就成了用户不想要的;

测试的重要性

测试重要,大家都知道;但单元测试,有多少个项目能认真的做过;没有质量高、覆盖好的单元测试,哪来的勇气去重构一个个庞然大物似的老项目?
这句话很精辟:测试你的软件,否则用户就得测试;

新方法和新工具

有个新工具或新方法想在项目组中推广,这事挺好;但不要低估采用新工具和新方法的代价,可能你的项目需要花上太多精力来熟悉这个方法,而第一个采用这个方法的项目,可能就只能是实验品;
批判的看待方法学,从中提炼适用团队的精华;

 

标签:读书笔记,重复,资产,代码,复用,正交,程序员,修炼,开发者
From: https://www.cnblogs.com/wangzelin/p/17346352.html

相关文章

  • 十五年程序员从零开始学C#系列之(一)——Literals 字面量
    一、概念在计算机编程中,Literals(字面量)是指在程序中直接表示数据的一种方式。它们是在代码中出现的固定值,与变量不同,它们没有名称或标识符。Literals可以用于各种数据类型,包括整数、浮点数、布尔值、字符和字符串等。下面是一些常见的Literals类型:整数(IntegerLiterals):整数L......
  • #yyds干货盘点# LeetCode程序员面试金典:搜索旋转排序数组
    题目:整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]在下标3处......
  • 《用户故事与敏捷方法》读书笔记5
      软件开发是渐进明细的过程,充满挑战。软件需求是被识别为最常见的痛苦根源。如何定义需求,冗长的文档已经不被阅读者接受,简单、精准、一目了然的格式一致的用户故事越来越被接受。当掌握刚刚足够的信息就继续前行,按需及时开展,通过交谈获取所需要的细节。从用户角度出发描述......
  • 读书笔记(CSAPP)02
    gcc-Og-Smstore.c上述命令行Og意思是优化等级,指生成符合原始C代码整体结构的机器代码的优化等级,S是产生一个汇编文件,就可以查看编译器产生的汇编代码gcc-Og-cmstore.c上述命令行则是生成".o"的目标代码,它是二进制的,是给机器执行的字节序列,也就是对一系列指令......
  • 程序员知识点(5)
    系统总线:系统总线性能总线的带宽(总线数据传输速度):单位时间内总线上传送的数据量,即每秒钟传送的MB的最大稳态数据传输率.总线的带宽=总线的工作频率*总线的位宽/8总线的位宽:能同时传送的二进制数据的位数,或数据总线的位数。即32位,64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传......
  • 【读书笔记】ISBN9787121353932
     【前言】是否所有人都可以公平地享受科技发展带来的生产力进步?AIGC应用越完善,内容生产的社会必要劳动时间就越少,人工就越没有价值。全社会新增劳动岗位的速度很快就会跟不上AIGC应用取代人工的速度,而不会使用AIGC应用的劳动者可能将无法获得收入、无法进行消费,从而逐步被剥离......
  • 程序员最新赚钱指南!
    程序员们的主要收入来源1️⃣首先,我们要明白程序员无论编程开发多么努力,随着时间推移,受年龄、生活、健康等因素,程序员们都会面临职业天花板,这是大多数人不可规避的一个事实。2️⃣其次,这几年因为疫情原因导致赚钱难,医院都开不出钱来,更何况那些大厂?有人说,追梦吧,追求自由的心,毕竟就算不追......
  • #yyds干货盘点# LeetCode程序员面试金典:最长有效括号
    题目:给你一个只包含'(' 和')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例1:输入:s="(()"输出:2解释:最长有效括号子串是"()"示例2:输入:s=")()())"输出:4解释:最长有效括号子串是"()()"示例3:输入:s=""输出:0代码实现:classSolution{publicint......
  • 软件工程日报——《用户故事与迅捷方法》读书笔记一
    《用户故事与迅捷方法》(UserStoriesApplied:ForAgileSoftwareDevelopment)是一本介绍敏捷软件开发中用户故事的书籍。下面是我的读书笔记:作者MikeCohn从如何编写用户故事开始,逐步给读者讲解了使用用户故事做敏捷开发的过程、如何划分优先级以及评估和计划等内容。以下是......
  • 程序员面试金典---12
    递归乘法直接上代码:/***@param{number}A*@param{number}B*@return{number}*/varmultiply=function(A,B){if(A===0||B===0)return0arr=[0]for(leti=1;i<=B;i++){arr[i]=arr[i-1]+A}returnarr[B......