1写更多代码

如果你想在某件事上做得更好,你就必须花时间去做这件事。

不管你读了多少篇文章,读了多少遍文档,不付诸行动,你就不会进步。

这种设计模式一开始看上去很难,但当你在多种环境中实践后,它就变得非常简单。

2编写测试

当第一次开始为自己的代码编写测试时,我惊讶地发现:自己缺乏编写良好测试的心态。

编写测试让你能以起初没有想到的方式看看自己的代码,因为在构思测试时,你必须考虑这个东西会出什么问题。

你意识到,自己写的那个函数做了太多的事情,分成多个函数可能更好,因为很难想出一个测试可以测试做这么多事的函数。

让我们看看下面的例子:

function postData(data) { boolean valid = true; // check if data is defined if (data === undefined) {   valid = false; }// check if email is well formed if (!regex(data['email']) {   valid = false; }// check if password is atleast 8 chars. if (data['password'].length < 8) {   valid = false; }if (valid) {  http   .post(`example.com/user/create`, data)   .then((response) => {    //append to the list    this.users.append(response.userid);   })   .catch((error) => {    // show errors.   }); } else {   showValidationError(); }}

如上所示,postData方法做了许多事情,比如验证数据、在条件都满足时追加到用户列表并处理错误。

postData编写单元测试会相当困难和混乱。你可以把它分解成多个方法,然后分别测试每个方法。

function postData(data) { return http   .post(`example.com/user/create`, data);}function validate(data) { // check if data is defined if (data === undefined) {   return false; }// check if email is well formed if (!regex(data['email']) {   return false; }// check if password is atleast 8 chars. if (data['password'].length >= 8) {   return false; }  return true;}function appendUsers(userId) {  this.users.append(response.userid);}function main() { if (validate(data)) {  postData(data)   .then(data => appendToList(data.userId))   .catch(error => handleError(error)) } else {  showValidationError(); }}

你已经看到为什么编写测试会带来更高质量的代码。

你必须将长方法分割成多个更小的单元,并且每个单元都可以进行原子测试。

3诚实

不管你是完全了解,还是不了解,都要诚实。

假装知道某个 API 的输入和输出,你就无法进步。相反,如果你因为对 API 或主题缺乏了解而说了一些愚蠢的话,你可能会在讨论中出洋相。

4为开源项目做贡献

为开源做贡献能让你接触到工作中可能永远不会出现的场景,开拓视野。

这个过程中,你可以了解在分布式场景中运行一个项目需要什么,引入非破坏性更改和其他新的开源工具等。

总之,好处说不完,我们都知道开源如何直接或间接地改变了每个人的生活。

5乐于助人

对自己知道的事情,帮助别人会让你成为那个方面的“领路人”,并确定你在团队中的价值和重要性。

如果是你可能不是最擅长的事情,也要乐于助人,因为你可能从中学到一些有价值的事情。

6选择一个个人项目

个人项目是学习新框架和新技术的好方法,而你可能在工作中没有用到过它们。

对于一个个人项目,你既是产品经理,又是开发人员和架构师,因此可以想象要做多少决策。

你可以借鉴在个人项目中的经验,在工作或社区中建议新的框架和工具,如星星般闪耀。

7放低姿态

不要让自负和你的工作头衔阻碍学习和进步。

少考虑你是谁,多想想你每天会变成什么样。这个组织中的架构师,可能是其他机构中的软件开发人员。

对自己擅长的事情,尝试去采取新的、不同的方式。否则,你可能错过一个更有效的算法或一个更好的特性设计。

8理解“为什么”

在接受并坚定使用新框架、模式或 API 的信念前,请先理解它存在的“原因”。试着从直觉上理解一个概念的存在。

var app = new Vue({  el: '#app',  data: {    message: 'Hello Vue!'  }})

以上是你在 vue.js 文档站点上遇到的第一个代码示例。即使在看这个非常基本的例子时,我也试图在我的头脑中推断以下的事情:

为什么要用一个new关键字来创建组件?为什么它们没有一个工厂模式来创建对象?

似乎el属性获取了元素的id,为什么它使用# ?这是否意味着我可以添加其他元素选择器,比如属性和类?

data似乎是Vue对象的一个非常通用的属性名,它究竟要表示什么?

并不是说你应该对每件事都这么挑剔,而是说培养这种习惯有助于更好地理解事物的哲学,从而提高你的理解力。

9不要懒惰

懒惰会阻碍你展示自己的技能或关心的事,例如,如果你相信重构能提高性能,那就去做吧。

添加注释节省其他开发人员的时间,记录你新构建的 API。

你在代码中附加的时间等于为其他开发人员节省时间,他们正在尝试理解你所编写的内容。

10解决编码挑战

解决编码挑战会迫使你去思考那些我们日常生活中习以为常的东西。

我说的是代码的空间和时间复杂度。有些人认为,解决挑战是不现实的,因为大多数东西都是抽象的,你只需要使用 API。

但是我不同意!这不仅帮助你仔细查看代码,也使你有信心想出性能最好的代码,另一个好处是,你总是在准备面试。

一些解决挑战的网站有 hackerrank、leetcode、topcoder 和 spoj

11鼓励他人

如果你喜欢同事的提交,那么不要犹豫,在 StackOverflow 上留言,感谢或支持那个对你有帮助的答案,或者在 Medium 上为那篇给你带来免费知识的文章鼓掌,或者在 GitHub 上为你看中的有趣项目加星。

鼓励别人可以帮助他们发挥出最好的自己,最终你也会发挥出最好的自己。

12不要躲在技术栈的某一层后面

假如你发现了在视图中使用 API 的一个问题,但却不能修复它,因为你是一个“前端开发人员”。

在我看来,这是一种不好的态度。编程的基本原则,如保持代码干爽(DRY)、看到类的多个用例就使用抽象、捕获所有流控制路径的异常等等,几乎适用于技术栈的每一层。

记住这些基本原则,它们可能会帮你解决自己认为无法解决的问题,因为你认为自己没有处理代码库的这一部分。

13结论

正如我上面所说的,阅读本指南将帮助你意识到自己没有做的事情,但要想从人群中脱颖而出,就需要付出努力和自律。

如果你喜欢这篇文章,请不要忘记与其他开发人员分享。希望本文对你有所帮助!