《程序员修炼之道:从小工到专家》第三章:基本工具(1)

工具放大你的才干,你的工具越好,你越是能更好地掌握它们的用法,你的生产力越高。从一套基本的通用工具开始,随着经验的获得,随着你遇到一些特殊需求,你将会在其中增添新的工具,要和工匠一样,定期增添工具。要总是寻找更好的做事方式。不要局限于某一种特定的工具,比如IDE。

花时间学习使用一些工具,有一天你会发现,你的手指在键盘上移动,操纵文本,却不用进行任何有意识的思考。工具将变成你的双手的延伸。

一、纯文本的威力

什么是纯文本

  • 纯文本由可打印字符组成,人可以直接阅读和理解其形式。
  • 纯文本并非意味着文本是无结构的:XML、HTML都是良好定义的结构的纯文本的例子。
  • 与二进制编码相比,纯文本所处的层面往往更高,二进制的问题在于理解数据所需的语境和数据本身是分离的。

用纯文本保存知识。

缺点

  • 与压缩的二进制格式相比,存储纯文本所需空间更多(更大);
  • 要解释及处理纯文本文件,计算上的代价可能更昂贵(更慢)。

文本的威力

  • 保证不过时
  • 杠杆作用(计算世界里的每一样工具都能够在纯文本上进行操作)
  • 更易于测试

最小公分母

你需要确保所有各方能够使用公共标准进行通信,纯文本就是那个标准。

二、shell游戏

每个工匠都需要好用、坚固、可靠的工作台,用以在加工工件时把工件放在方便的高度上,工作台成为木工房的中心,而对于操纵文本文件的程序员,工作台就是命令shell。

在shell下,你可以启用各种应用程序,可以搜索文件、查询系统状态、过滤输出,通过shell进行编程,可以构建复杂的宏命令,用来完成你经常进行的各种活动。

当然你可以用GUI完成所有工作,但你将错过你的环境的某种能力,GUI的好处是WYSIWYG(所见即所得),缺点是WYSIAYG(所见即全部所得)。GUI经常受限于它们的设计者想要提供的能力。

作为注重实效的程序员,你不断地想要执行特别的操作——GUI可能不支持的操作,当你想要快速的组合一些命令,以完成一次查询或某种其他的任务时,命令行可能更为适宜。

例如找出修改日期比你的Makefile的修改日期更近的全部.c文件:

find . -name '*.c' -newer Makefile -print

构造我的源码的zip存档文件

zip archive.zip *.h *.c

在上周哪些Java文件没被改动过:

find . -name '*.java' -mtime +7 -print

shell命令可能很晦涩,或是太简略,但却很强大,也很简练。同时,因为shell命令可以被组合进脚本中,你可以构建命令序列,是你常做的事情自动化。

利用命令shell的力量

去熟悉shell,你会发现自己的生产率迅速提高。

一种编辑器

最好是精通一种编辑器,并将其用于所有编辑任务。如果不坚持使用一种编辑器,可能会面临现代的巴别特大混乱。

用好一种编辑器。

你需要的是精通。确保你的编辑器能在你使用的所有平台上使用,并且既有GUI版本,也有非GUI版本。

编辑器特性

  • 可配置
  • 可扩展
  • 可编程
  • 语法突出
  • 自动完成
  • 自动缩进
  • 初始代码和文档样板
  • 与帮助系统挂接
  • 类IDE特性(编译、调试等等)

生产率

有些编辑器帮助你使常用操作流水线化:

  • 填好的类名或模块名
  • 你的姓名或版权声明
  • 该语言中的各种构造体的骨架

有哪些编辑器可用

  • Emacs
  • The Vim Editor

三、源码控制

源码控制系统追踪你在源码和文档中做出的每一项变动。

总是使用源码控制

确保每一样东西都处在源码控制系统之下,哪怕团队只有你一人,项目只需要一周时间,即使那是用过就扔掉的原型。

阅读原文:程序员修炼之道:从小工到专家

学院君

学院君 has written 554 articles

资深PHP工程师,Laravel学院院长