干货—优秀程序员知道而新手不知道的秘诀?

一个优秀的程序员之所以优秀就是有着新人所不知道的工作秘诀。今天小编就为大家整理了一些优秀程序员知道而新手们不知道的秘诀。

Jens Rantil 的观点:

避免过早引入接口,除非你能够完全控制它。“过早接口”同样会导致设计问题。

预估时间在开发中是一件很难的事情。这就是为什么在很多地方使用敏捷开发(Scrum)和 Sprints 。

无副作用逻辑(Side-effect free logic)是非常棒的,这使了解程序状态更简单(参看下一条),同时也简化了自动化测试。

如果选则合适的实现方式,并发并不难。线程池、队列、观察者模式、非可变性和Actor模型编程可以帮你很多。

了解程序的基本数据结构和理解时间复杂度。这是一个有效使代码变得更快在的方法,且不会增加代码复杂度。

应用程序早晚会出问题;不好的部署,意想不到的行为,意想不到的输入或意想不到的外部加载。为了应对这些问题。我们需要确保用日志记录下那些未捕获的异常,在部署工作完成后进行测试(并可能回滚),并不停地运行测试,也要确保为所有内存中的队列和线程池设置限制(理智的)。相关;

网络服务和外部服务应该一直保持片状(易剥离的,即插即播)。为每一个套接字(Socket)设置超时,在每次HTTP读或者连接操作时都设置超时。建议可以将外部网络封装到一个重试/循环断路库中。(参考 Netflix/Hystrix 和 rholder/guava-retrying)

为项目设置构建工具,这样别人可以更快开始工作。在你的README文件中记录下要构建、运行、测试和打包的命令。

在许多语言中,处理第三方依赖关系是一个真正混乱的事情(看看你的Java和Python工程)。特别是当两个不同的库依赖于不同版本。使你远离这些麻烦的好方法: 1 ) 不断审视你的依赖库。 2 ) 自动化测试有助于解决此类问题。 3 ) 总是关注你应该使用哪个版本的第三方依赖库。

为应用添加的每一行代码都会增加项目的复杂性,同时使它发生错误的可能性更高。删除代码是一个消除错误的好方式。相关;

代码路径导致的失败,很少在测试或执行中出现。但往往这就是bug的原因。

和上一条有一些关系:有些相关状态验证和输出验证可以作为输入验证同样有用,无论是为了发现内在的bug,还是为了安全性。

学习一门新编程语言是一种很好的方式,以了解新的范式和旧的习惯问题。

了解你的工具,包括编辑器、终端、版本控制系统(如git)和编译工具。

重用代码不是一个最终的目标,也不会使你的代码更易于维护。重用复杂的代码,但请注意,两个域之间的代码重用可能使它们产生过度的依赖。

自动化测试,特别是单元测试,不仅仅是测试您的代码。它们还: 1 ) 告诉大家代码的使用范围; 2 ) 还能帮助你提前的适应生产环境。后者是为什么一些人声称测试优先的开发方法可以产生干净的API。

和编译语言相比,动态语言通常需要更多的测试工作来保证它的正常工作。(离线代码分析工具也很有用。)

理解吞吐量和延迟之间的关系在优化您的系统时非常有用。相关;

保持你提交的代码简短、可用,提交代码的时候写下你做了什么的日志,告诉大家你为什么做这些。有效的提交信息是解决bug的先决条件。

尽早的了解你的产品运行环境,并根据环境对部署策略进行调整。

学习面向对象的语言是很容易的。掌握良好的面向对象设计是困难的。了解面向对象设计和面向对象的设计模式将改善你的面相对象设计的理解。

巴士系数也是你团队中的一个严重风险。(一个项目至少失去若干关键成员的参与(被巴士撞了,比喻)即导致项目陷入混乱、瘫痪而无法存续时,这些成员的数量即为巴士系数。)作为团队的一员,大多数你写的代码需要被别人读或者修改。这包括你早些时期在项目中写的代码。在一开始你就应该写好文档和提交信息。此外,代码评审和脚本也可以帮助你分享一些知识。最后,确定你不是唯一一个知道密码的人。等等

了解概念

了解你的工具

做好时间管理

安排好处理事情的顺序

重用所有你能重用的

这些事情真的会降低你的效率。随着你每天遇到更多的问题,你将获得更多的经验,这会让你能更快的解决更多的问题,这样一直下去。这是一个循环,一旦你能够正确的对待这些事情时,你的效率和价值将会得到大幅度的提升。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180124A0E83200?refer=cp_1026

相关快讯

扫码关注云+社区