The Joel Test: 12 Steps to Better Code —— M$ 职业素养 —— 养成

本文分享了一系列提高编程效率的方法,包括代码注释技巧、自动化构建、版本控制的最佳实践、敏捷开发原则及如何有效进行bug管理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章的意义? To be Disciplined


### Todo

-1. 

(1)写代码过程中的积累和学习: 使用 一些特殊的标记作为代码注释,标记出值得注意的地方。在当天commit的时候,使用 grep 提取并且导入到 一个 list 中去。

(2)PAR的注释:只是使用不同的标记而已。

 

0. 先不要急着 coding, 先找到价值所在。

1. 一键 git push

(1)使用 org / markdown 来撰写开发 log

(2)将 log 放入 开发目录中

(3)使用 ssh key 来 push 到 git 中( Done

(4)使用 一个 script ,定时将所有 repo 压入到


2. 学会单元测试 和 编写有效的测试样例

vzch:正确的代码是测出来的 


3. 争取找到自己的流程

(1)适用环境?技术?工具?(版本控制整合:git ,进度跟踪:todo list ,工作分配,集成发布和迭代规划:scripts,论坛和软件缺陷的报告和跟踪: bug trace database

reading list

a.clean code : A handbook of Agile software craftmanship

b. Agile Software Development, Principles, Patterns, and Practices

c. Refactoring 


敏捷 ? 迭代 ? (区别 : 敏捷方法的周期可能更短,并且更加强调队伍中的高度协作。)

敏捷 的 方法学中: 极限?

(2)BDD ? TDD?


4.


###

1. 为什么 source control ? 一个主要原因,roll back 是很重要的。 需要学习。

2. 为什么 一步 build ? 重点在一步:自动化地build,可以减少人为出错的可能心。

但是,具体呢? checkout -> rebuild -> create installation package 。 rebuild时,还需要考虑:in all their various versions, languages, and #ifdef combinations, 需要学习。

3. 为什么每天都要build 一回? (skipped) 一旦build 出错,那么,其他协作人员

4. 为什么 bug database ?  因为脑子里面记不住。 

具体呢?  对于 个人来讲 , crucial 的 是:


  • complete steps to reproduce the bug
  • expected behavior
  • observed (buggy) behavior

5. 为什么 new code 之前要修正所有的 old bug ?因为:


In general, the longer you wait before fixing a bug, the costlier (in time andmoney) it is to fix.


这一点,《The Art of Software Testing》也讲过 。 为什么 ?

原理:将 detail load 进 brain 是需要 take some time 的。

而 越早,那么,花的时间越短。 


1. 记忆力有限,容易忘 

2. 更糟糕的是,如果 几个 之后再来修bug,那么,很可能这个人离职了。那怎么办? 你来修bug,就需要一套 工程化 的方法:太慢了

 fixing the bug is like science: you have to be slow, methodical, and meticulous, and you can't be sure how long it will take to discover the cure.

3. 项目进度 更容易 schedule。因为,修bug所需要的 time cost 比 new code 更估计(这一点,已经观察到。)


具体呢? 我觉得,单人的时候,做好一个模块,再去做另一个模块。


6. 实时更新的schedule

1)商业应用需要

2)有了schedule,就会逼迫你去选择性地做一些feature,避免 特征蠕变

特征蠕变(有时也被称作需求蠕变或者范围蠕变)是在产品或项目开发期间,需求驱动发生变化或增长并跟原来的不同,带来一些开始没有计划的产品特点,对产品质量或时间表产生影响。特征蠕变来自于客户增长的“需求列表”,或者是开发者本身发现了提升产品的机会。为控制特征蠕变,项目管理工具,比如需求稳定指数(requirements stability index,RSI),有时被提倡。


7. 有“规格说明”么?

1)英语(文字语言)是 最快 的 编程语言:不需要 debug, 只要改 几行 就够了。

How-to:intensive course in writing  或者 program manager 来写

至于如何写? 4-part series


8. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值