读《代码整洁之道》

代码整洁之道-程序员的职业素养.jpg

借部门的一次读书会上,我挑选了 Bob大叔的《代码整洁之道》这本书。在读了这本书的前面几章节时就觉得感触极大,今天刚好读完,希望下面我的感受也能帮到想成为专业程序员的你。

什么是专业程序员

专业程序员并不好当。
作为一个专业程序员,最重要的一条是坚守原则,为自己的承诺负责。如何坚守?在面对外界(项目经理,产品经理,客户等)强制的要求时,应该用自己专业的知识去衡量问题的可行性,而不是轻易妥协。
“试试看” 这类的词不应该从一个专业程序员口中说出,因为你说的“试试看”对你来说是代表着可能完成,可能完成不了,但是在外人听来,他们认为你说的是可以完成,而最终当问题没法在他们预期的时间完成时,受到影响的不单单是公司的利益,你的信誉也收到了损害。
所以,在面对一个自己觉得没法在指定时间完成的任务,应该坚决的说不,并且坚持这个底线。而在觉得问题可行的情况下,也应该准确的说是,并为自己的承诺负责。

专业的程序员并不代表什么都懂,他们勇于接受他人的帮助,知道什么时候该结对编程。同时,他们也乐于帮助其他人,辅导新人。他们会抽出时间去阅读,编码来提升自己。

专业的程序员对自己的每一行代码负责,没经过测试的代码绝不提交。
我们应该把“QA应该找不到任何错误”作为努力目标,对QA找到的每一个问题,都应该高度重视、认真对待。应该反思为什么会出现这种错误,并采取措施避免今后重犯。

测试驱动编程(TDD)

什么是TDD?简单来说就是:先写测试,再写功能。这听起来好像很扯,但是了解其意义之后,你会为TDD喝彩。
因为自己这段时间也在负责部门 React-Native 项目单元测试的实践(不过并没有执行TDD,而是采用了相反的方式,即先功能后测试)。
过程中,深刻体会到单元测试其中的一个好处:强迫自己抽象,再抽象。为了让自己所写的函数可测试,你需要做到尽量让其内部逻辑简洁,单一,耦合性低,否则你根本就测不了它,或者说你要写更多的case才能完整覆盖它。
其好处自然就很明显了:

  1. 通过测试的代码,我们可以很有信心的将他提交;
  2. 简洁的代码,既提高其可读性,也提高其健壮性。

TDD相关的书籍我没阅读过,借助作者的简单描述,我在项目的一个模块重构上做了实践,效果是真不错。之后也打算更深层次的去理解它,并在以后的项目上加以实践。

作者提到了TDD 的三项法则,这里摘抄了下来:

  1. 在编好失败单元测试之前,不要编写任何产品代码;
  2. 只要有一个单元测试失败了,就不要再写测试代码:无法通过编译也是一种失败情况;
  3. 产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写。

时间管理

这部分应该说不单单是面向专业程序员,而是面向所有希望走向成功的人。
毫不夸张的说:能否对自己时间有个好的管理是决定你能走多远的必要条件。但是我们大多都做的不够好,甚至一塌糊涂。从专业程序员角度,作者也说了下面几点:

  • 如果发现参加某个会议是在浪费时间,就应当想个礼貌的办法退出来,继续参加对你没有太多意义的会议,是不专业的行为。你有责任合理分配老板给你的时间和金钱,所以,选个合适的机会离席,并非不专业的行为。
  • 如果观点无法在短时间(5-30分钟)里达成一致,就永远无法达成一致。唯一的出路是,用数据说话。
  • 注意力点数会随时间流逝而减少,使用合理的方式进行恢复:充足的睡眠(不熬夜的情况下7-8个小时足够了);也可以选择小憩,看杂志等方式;另外可以通过训练肌肉注意力(骑车,吉他等方式)来提升自身的心智注意力。
  • 番茄工作法
  • 如果你掉进了坑里,别挖
  • 陷入泥潭,别继续往前

在参加会议这块,我经常表现的不够专业,参加了一个会议或者讲座,发现根本听不下去或绝对对自己没什么用处,但是又不好意思中途离开,所以就干脆玩起了手机。最后讲座没收获,自己时间也浪费了。在看了作者说的话后,默默的给以后的自己提了个醒。


番茄工作法的书籍我也读过,也因此在App Store上买了个便宜的软件(穷哭),但是实践起来是真的难,排除掉那些繁琐的步骤,你需要做的就是:

  1. 列出你当天要做的事情;
  2. 启动番茄钟(一般设置25分钟),开始执行任务;
  3. 时间到就停止手中的事情,休息5分钟。(3个番茄钟结束后休息15分钟)

难就难在,在番茄钟的25分钟里,你需要专注,高效率的去执行。但是,自身的注意力以及外界的突然打扰总是会让我分心。这一分心,回头再看下时间,番茄钟快结束了,我还什么都没做呢。
番茄钟工作法其中一个重要原则是:严格按照番茄钟去工作,该工作时认真工作,该休息时认真休息。这样做的好处是:可以培养你在短时间内快速进入专注状态,因为你必须在这25分钟里高效输出。
番茄工作法我目前也在实践着,不过每次受到外界因素影响时我都没法说出:等我20分钟之类的话。当我能很好的去遵循番茄工作法时我也会给大家分享下我更多的心得。(番茄钟到了,我休息5分钟)


代码总是会随着业务功能的增删改而变的混乱,之前设计很好的实现方式,也会逐渐不适用,这时是选择继续用这种设计方式去实现新功能,还是推翻重构呢?作为专业程序员,应该清楚的认识到,继续以这种方式去迭代,只会导致后面开发效率越来越低,代码也变得很难维护。刚进入泥潭你可能可以继续往前,但是你会发现,你会越走越慢,最后进退两难。所以,重构是明智的选择。

引用书的最后,触动到我的一句话:

你还记得你写的第一个程序跑起来的那个时刻吗?它改变了你的生活并指引你大步踏上编程之路了吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容