程序员优秀之路:一起来看下这 97 位”砖家“能给出啥编程的好建议?(4)

简介: 本瓜并未逐字逐句翻译,而是取其精要、理解抽象,结合自身进行撰文表达,与各位看官分享。认知好的编程概念,走向优秀~

image.png

本系列共 5 篇,通译自:97-things-every-x-should-know


License:由 CC BY-SA 3.0 获得许可;

欢迎点赞、收藏、评论~ O(∩_∩)O



(痛定思痛,前 3 篇翻译阅读量愈来愈差,每篇 20 小点,通常撰文每小点耗时 10 至 15 min,通篇下来需 3 ~ 5h。时间花费了,但效果甚微,反思这些编程概念、建议点是否过于冗长、空泛,于是转换思路,加大凝练力度,完成大于完美!)


代码告知真相



这位作者想说:


  1. 代码才能清楚的告诉别人你的真实意图,需求文档都不一定能说明全部真相;
  2. 注释只是辅助功能,别打算用注释来代替代码进行说明;
  3. 写代码要像写诗一样,精心去表达;


负责构建



这位作者想说:


  1. 项目的构建脚本也要一直去维护;
  2. 构建过程应该由研发团队负责,而不是给测试团队或其它“质量保障”团队;
  3. 充分了解构建过程,太重要了;


结对编程



这位作者想说:


  1. 全身心的一人编程很难实现,有太多中断和干扰;
  2. 尝试结对编程,促进交流、团队融合,取长补短,共同进步;
  3. 结对编程,让新同事快速上手;(真会玩~)


精确定义类型



这位作者想说:


  1. 举了个真实例子:一个卫星因为程序单位计算错误导致失联;
  2. 使用静态类型语言,编译器可以做检查;使用动态类型语言,则依赖单元测试;
  3. 精确定义变量的类型(自定义类型),而不仅仅是使用原始类型 String 或 Float 等;


避免报错



这位作者想说:


  1. 用户错误的使用程序而造成报错,这些情况是能预测,并采取措施进行避免的;
  2. 提供有效的提示能避免用户操作报错;
  3. 系统需零容忍错误,反思交互,甚至重新设计;


专业程序员



这位作者想说专业程序员:


  1. 第一特质是:责任感;
  2. 第二特质是:团队合作;
  3. 第三特质是:不容忍错误;
  4. 第四特质是:手艺人、代码干净;


版本控制



这位作者想说:


  1. 所有内容都需置于版本控制之下(源代码、文档、构建脚本、测试用例、第三方库等);
  2. 版本控制让一些行为可追踪;
  3. 版本控制减少开发之间的摩擦、冲突;
  4. 版本控制让团队更高效;


放下鼠标离开键盘



这位作者想说:


  1. 当你想问题几个小时都不能解决,应该放下鼠标离开键盘,出去换换脑子;
  2. 换换脑子之后能有更多创意性的解决想法;


阅读代码



这位作者想说:


  1. 程序猿喜欢写代码,但是不喜欢读代码;
  2. 思考代码如何易读?
  3. 想提高编程技能,可以通过阅读代码实现;


学习人文



这位作者想说:


  1. 程序的工作往往不是单纯的写代码,不可避免要与人打交道;
  2. 学习人文知识能提升你的思维;


造轮子



这位作者想说:


  1. 别急着否定重复造轮子的行为;
  2. 重复造轮子可以帮助你对工作原理有更深的理解;
  3. 重复造轮子更重要的意义是训练、获得经验;


慎用单例模式



这位作者想说:


  1. 单例模式确实简单,但是实际弊大于利,它不利于可测试性、可维护性;
  2. 单例模式易造成代码单元的隐式依赖,造成耦合;
  3. 单例模式不利于单元测试;
  4. 下次当你考虑实现或访问一个单例时,请再想一想;


代码炸弹



这位作者想说:


  1. 高度耦合的代码都是代码炸弹;
  2. 有很多方法可以衡量和控制代码的耦合度和复杂度;
  3. 衡量耦合有两个指标:扇入和扇出;
  4. 借助这些指标来进行调优;


还原代码



这位作者想说:

  1. 可以通过还原代码来理清混乱;(此小点与前文提过的“用删除来改进代码”契合)

单一职责



这位作者想说:


  1. 单一职责原则是良好设计的基本原则之一;
  2. 它表示一个子系统、模块、类,甚至是一个函数,不应该有多个改变的理由;
  3. 善用单一职责,将因不同原因而改变的事物分开,可创建具有可独立部署的组件结构。


从 yes 开始



这位作者想说:


  1. 将观点从 no 转变为 yes,再开始工作;
  2. 当别人说了一个荒谬得观点,你先别急着说 no,可以先问一下 why ?
  3. yes 代表着合作;


自动化



这位作者想说:


  1. 可重复得行为都能应用自动化;
  2. 自动化不仅用于测试;
  3. 在 IDE 中也要自动化;
  4. 自动化操作并不神秘;
  5. 学习自动化可以边做边学;


利用代码分析工具



这位作者想说:


  1. 测试只是提高代码质量的众多工具之一;
  2. 利用其它代码分析工具,比如 lint 等;
  3. 可以尝试自己自定义代码分析工具;


测试必需的行为



这位作者想说:


  1. 测试陷阱之一就是:测一些偶然的行为,与功能无关的行为;
  2. 测试需精确、准确;
  3. 测试需对被测单元的接口进行约定,测试行为与所需行为保持一致;


精确而具体地测试



这位作者想说:


  1. 测试基本行为而不是附带行为;
  2. 测试需要精确、准确;(与上一小点契合)


空余时进行测试



这位作者想说:


  1. 测试服务器应该利用起夜间和周末等空闲时间;
  2. 长时间运行的测试对于识别内存泄漏和其他稳定性问题至关重要;
  3. 当然,这些前提都是已经应用了自动化测试;


小感:虽然每个人的建议都不尽相同,但读完后似乎都指往相同的方向 —— 如何在程序员这个岗位上做的更好!有些小点还是挺有感触的,适合深挖。有些“共识”可能在大家看来已经是“共识”,而我则刚刚知道~共勉。


OK,以上便是系列第 4 篇分享(共5篇),关注专栏,系列持续追踪~

我是掘进安东尼,输出暴露输入,技术洞见生活,下次再会~


相关文章
|
Web App开发 移动开发 安全
Struts2 S2-062 (CVE-2021-31805) 远程代码执行漏洞
Apache 官方发布了 Apache Struts2 的风险通告,漏洞编号为 CVE-2021-31805,可能会导致远程代码执行。
682 1
|
Linux
一分钟学会Linux分区挂载
1.使用fdisk对/dev/nvme0n1剩余空间进行分区
862 0
|
算法
10分钟小白都可以看懂的光度立体法以及运用到项目
10分钟小白都可以看懂的光度立体法以及运用到项目
1591 0
10分钟小白都可以看懂的光度立体法以及运用到项目
|
监控 关系型数据库 MySQL
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
618 1
|
8月前
|
缓存 前端开发 JavaScript
Nginx性能优化
本课程深入讲解Nginx性能优化三大核心:动静分离、客户端缓存与Gzip压缩,涵盖反向代理配置、负载均衡实现及日志分析技巧,结合Shell命令与GoAccess工具进行实战统计,助力掌握企业级Web服务优化方案。
493 92
Nginx性能优化
|
7月前
|
人工智能 算法
【AI大模型面试宝典十】- 推理部署篇
【AI大模型面试宝典】聚焦模型压缩核心技术:量化解析(INT8/INT4/GPTQ/AWQ)、激活量化、稀疏化与知识蒸馏,配实战代码与面试高频题。助你攻克大模型部署难题,精准提升面试竞争力,offer轻松拿!点赞关注,持续更新中~
550 0
|
9月前
|
机器学习/深度学习 存储 算法
基于高阶累积量的调制识别
基于高阶累积量的调制识别是一种利用信号的高阶统计特性来识别不同调制方式的方法。
390 3
|
8月前
|
监控 网络协议 Linux
实用程序:Python打造进程网络监控与分析工具——全方位掌握你的网络与进程状态
一款基于Python开发的进程网络监控与分析工具,支持实时监控进程带宽、端口占用、网络环境信息及诊断功能,内置网速测试、Ping、路由追踪等实用工具,提供直观UI界面,操作简单。数据可导出为CSV或图表,便于分析。开源免费,Windows为主,兼容Linux/macOS。GitHub已开源,欢迎Star!
386 0
|
8月前
|
JSON API 数据格式
1688商品快递费用API概述
1688商品快递费用API是阿里巴巴提供的标准接口,支持通过POST/GET请求以JSON格式实时查询商品运费。可获取不同快递公司的费用、时效、明细及支持的快递列表,助力电商系统精准展示运费,优化用户购物体验。
|
8月前
|
人工智能 自然语言处理 机器人
2025年头部AI数字人公司技术解析,中国优秀数字人企业实探
2025年,数字人迈向规模化产业应用。世优科技“波塔AI数字人智能体”入选年度典型案例,凭借多模态交互、大模型+小模型架构与全栈技术,深入政务、文旅、医疗、教育等场景,实现降本增效。其技术自研、场景融合与生态共建能力,彰显数字人作为“新质生产力”的落地价值,引领人机协同新时代。
651 0

热门文章

最新文章