开篇:懒惰是程序员的优秀品质,他们无法容忍自己反复做同样的事情,无法容忍自己去做应该计算机做的事,无法容忍可以2个按键的操作却按了3个键来达到目的......
《Be Productive Programmer》就是这样一本教你如何变懒的书,Neal Ford非常睿智的编排了这本书的目录,把书籍分为机制和实践的两部分。
在机制部分,主要介绍了一些能帮助大家提升效率的工具,思想。个人从中收益的东西有:
1、Mac系统上使用QuickSilver加快程序的启动。
2、尽量少的使用鼠标,甚至都不要使用上下左右的按键,因为这些手势都会导致效率的下降。
3、使用Vim作为文本编辑器。
4、使用多重剪贴板,因为环境切换回消耗时间,jumpcut就是其中的一个好工具。
5、记住历史,历史的命令,上次的操作目录等等,防止反复输入。
6、尽量使用命令行,图形界面很杀时间,华而不实。
7,IntelliJ中使用KeyPrompter来帮助记住快捷键,IntelliJ的快捷键会极大的提升我们的编码效率。
8、使用宏来记录一段反复使用的计算机操作。
9、做事情的时候专注,隔离干扰。
10、搜索优于导航,找东西的时候不要人肉遍历,使用内置的搜索会极大的提高效率。搜索时对正则表达式的理解会极大的提升你的效率。
11、多桌面的工作环境,一个桌面专注于做一件事。
12、自动化一切能自动化的东西
13、注意自动化时的“yakshaving”问题,一旦发现自动化耗时过多,果断停住,回顾。
14、一切跟你个人环境设置的项目文件都应该放到版本管理中。
15、如果不实时更新文档还不如没有文档。
16、把代码的提交信息尽量写详细,便于项目组成员之间的沟通。
17、白板+相机强于任何的Case工具。使用工具的成本一定要纳入项目考虑。
18、不要重复,重复是软件开发中的最大阻力,是写出良好代码的根本原则。
在实践部分,主要讲了一些在实践过程中自己总结的一些理念。
1、TDD的开发实践,消除功能浪费。
2、把注释重构成代码,需要写注释的代码意味着需要重构。
3、以TDD开发的代码应保持100%的测试覆盖率,没覆盖的代码意味着不应该存在,因为没有消费者。
4、使用CheckStyle,FIndbug,PMD帮助分析代码中潜在的问题。
5、不要破坏封装,只开放需要开放的成员变量。
6、构造函数的含义,没有状态的对象存在是没有意义的
7、慎用单例,单例对象自己管理自己的实例,显得有点怪,可通过工厂方法管理。
8、不要写出类似JDK的Calendar的代码,语义不明,自以为是的替客户做决定。
9、只开发现在需要的功能,不要开发将来要用的功能,不要给软件贴金使用最新的技术和框架,只选择当前业务需要的技术,如无必要,切勿给软件增加复杂度。
10、软件开发的第一步是沟通博弈,弄清楚问题远比解决问题重要。
11、区分事物的本质属性和附加属性。抓住事物的本质属性,去除附加属性可以让事情变简单。
12、学会质疑传统的方法,以开阔的思维解决问题。
13、组合方法,让方法看起来像一段连贯的话,方法的行数要少于15行。
14、每个方法的所有代码都应该属于同一级的抽象层次。
15、把所有的实现细节都封装在公共方法之外,对外提供只是方法的功能说明。
16、学习多种语言,根据每个语言的特点选择合适的语言解决问题。
17、好的工具可以提高效率,复杂的工具尽快抛弃,把所有的功能,行为都抱在可测试的代码当中。
《Be Productive Programmer》就是这样一本教你如何变懒的书,Neal Ford非常睿智的编排了这本书的目录,把书籍分为机制和实践的两部分。
在机制部分,主要介绍了一些能帮助大家提升效率的工具,思想。个人从中收益的东西有:
1、Mac系统上使用QuickSilver加快程序的启动。
2、尽量少的使用鼠标,甚至都不要使用上下左右的按键,因为这些手势都会导致效率的下降。
3、使用Vim作为文本编辑器。
4、使用多重剪贴板,因为环境切换回消耗时间,jumpcut就是其中的一个好工具。
5、记住历史,历史的命令,上次的操作目录等等,防止反复输入。
6、尽量使用命令行,图形界面很杀时间,华而不实。
7,IntelliJ中使用KeyPrompter来帮助记住快捷键,IntelliJ的快捷键会极大的提升我们的编码效率。
8、使用宏来记录一段反复使用的计算机操作。
9、做事情的时候专注,隔离干扰。
10、搜索优于导航,找东西的时候不要人肉遍历,使用内置的搜索会极大的提高效率。搜索时对正则表达式的理解会极大的提升你的效率。
11、多桌面的工作环境,一个桌面专注于做一件事。
12、自动化一切能自动化的东西
13、注意自动化时的“yakshaving”问题,一旦发现自动化耗时过多,果断停住,回顾。
14、一切跟你个人环境设置的项目文件都应该放到版本管理中。
15、如果不实时更新文档还不如没有文档。
16、把代码的提交信息尽量写详细,便于项目组成员之间的沟通。
17、白板+相机强于任何的Case工具。使用工具的成本一定要纳入项目考虑。
18、不要重复,重复是软件开发中的最大阻力,是写出良好代码的根本原则。
在实践部分,主要讲了一些在实践过程中自己总结的一些理念。
1、TDD的开发实践,消除功能浪费。
2、把注释重构成代码,需要写注释的代码意味着需要重构。
3、以TDD开发的代码应保持100%的测试覆盖率,没覆盖的代码意味着不应该存在,因为没有消费者。
4、使用CheckStyle,FIndbug,PMD帮助分析代码中潜在的问题。
5、不要破坏封装,只开放需要开放的成员变量。
6、构造函数的含义,没有状态的对象存在是没有意义的
7、慎用单例,单例对象自己管理自己的实例,显得有点怪,可通过工厂方法管理。
8、不要写出类似JDK的Calendar的代码,语义不明,自以为是的替客户做决定。
9、只开发现在需要的功能,不要开发将来要用的功能,不要给软件贴金使用最新的技术和框架,只选择当前业务需要的技术,如无必要,切勿给软件增加复杂度。
10、软件开发的第一步是沟通博弈,弄清楚问题远比解决问题重要。
11、区分事物的本质属性和附加属性。抓住事物的本质属性,去除附加属性可以让事情变简单。
12、学会质疑传统的方法,以开阔的思维解决问题。
13、组合方法,让方法看起来像一段连贯的话,方法的行数要少于15行。
14、每个方法的所有代码都应该属于同一级的抽象层次。
15、把所有的实现细节都封装在公共方法之外,对外提供只是方法的功能说明。
16、学习多种语言,根据每个语言的特点选择合适的语言解决问题。
17、好的工具可以提高效率,复杂的工具尽快抛弃,把所有的功能,行为都抱在可测试的代码当中。