微擎老虎 请联系开发者!
免责声明:我不是最好的开发人员,但我感谢并推理出使一些开发人员与众不同的差异。
![](https://i-blog.csdnimg.cn/blog_migrate/93ddaf563d232c6d9216f2edb82aa6db.png)
写更多代码
如果您想在某件事上变得更好,那么您必须花时间做那件事,没有其他可悲的方法。 无论您阅读了多少篇文章,阅读了多少次文档,除非您动手行动,否则您都不会有所改善。 在您尝试将其在多种环境中使用后,一开始似乎难以实现的设计模式似乎就像是轻而易举的事。
![](https://i-blog.csdnimg.cn/blog_migrate/93721efb9f32c75553346ae329ae005b.gif)
合并测试
当我第一次开始为自己的代码编写测试时,我惊讶地发现自己缺乏编写良好测试的心态。 编写测试将使您能够以一开始没有想到的方式查看代码,因为在进行测试时,您必须考虑如何破坏该代码,并且意识到自己在编写的函数中做了太多的事情,并且将其拆分为多个函数可能会更好,因为很难针对一个执行多项任务的函数进行测试。
让我们看下面的例子
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();
}
}
您已经知道为什么编写测试会导致更好的代码质量,您必须将长方法拆分为多个较小的单元,并且每个单元都可以进行原子测试。
说实话
对您完全了解和不了解的内容诚实。 假装您知道API的来龙去脉将永远无法帮助您改善和发挥作用,如果您由于对API或主题缺乏知识而碰巧说出一些愚蠢的话,那么您可能会在讨论中丢脸。
贡献开源
致力于开源可能会使您面临工作中永远不会发生的情况,从而限制了您的视野。 您可以了解在分布式方案中运行项目,引入不间断的更改以及其他新的开源工具等所需要的知识,其好处是无穷的,而且我们都知道开源如何直接或间接地改变了每个人的生活。
![](https://i-blog.csdnimg.cn/blog_migrate/ca4314a3f524855d835bbb43ee159f63.png)
乐于助人
帮助他人完成您所知道的事情会使您成为该概念/功能/ API的“理想”人,从而阻止了您在团队中的价值和重要性。 乐于为可能不是您最擅长的事情提供帮助,您可能最终会从经验中学到一些有价值的东西。
选择一个个人项目
个人项目是学习您可能在工作中不会遇到的新框架和技术的好方法。 在您的个人项目中,您是产品经理,您是开发人员和架构师,因此您可以想象需要做的决策量。 您可以利用项目中的经验,为工作中或社区中的新框架和工具提出建议,并像⭐️一样闪耀
降低自我
不要让自我和职称介于学习/提高之间。 不必在意自己是谁,而在乎每天变成什么。 xyz
组织中的架构师可能是其他组织中的软件开发人员。 始终对自己认为擅长的事情采取新颖的不同方式持开放态度。 您可能会放弃使用更高效的算法或对功能进行更好的设计。
![](https://i-blog.csdnimg.cn/blog_migrate/1931b412655a1c67af87ec311ecb9855.gif)
了解“为什么”
在接受并阻止对新框架,模式或API的信念之前,请先了解“为什么”存在。 尝试了解一个概念的真实存在。
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
上面是您在vue.js docs网站上遇到的第一个代码示例。 即使在查看这个非常基本的示例时,我也试图在脑海中推理出以下几点:
- 为什么要使用
new
关键字来创建组件? 他们为什么没有工厂模式来创建对象? - 似乎
el
属性采用元素的id
,为什么使用#
? 这是否意味着我可以添加其他元素选择器,例如属性和类? -
data
似乎是vue
对象的非常通用的属性名称,它试图精确表示什么?
并不是说您应该在所有事情上都对这一点至关重要,而是养成这种习惯可以帮助您更好地理解事物的哲学,从而提高您的理解力。
不要偷懒
懒惰可能会以您的方式展示您的技能或您关心的事情,例如,如果您认为重构将改善性能,则继续进行,添加注释以节省其他开发人员的时间,记录已构建的新API 。 您在代码中添加的时间等于为其他尝试理解您编写内容的开发人员节省的时间。
![](https://i-blog.csdnimg.cn/blog_migrate/53e72171e24f07edc71a4321295ab2e8.gif)
解决编码挑战
解决编码难题会迫使您考虑我们在日常工作中理所当然的事情。 我说的是我们代码的时空复杂性。 有人认为解决挑战是不切实际的,因为大多数事情都是抽象的,而您只是要使用API。
但我不同意! 它不仅可以帮助您批判性地查看代码,而且可以使您有信心在性能方面提出最佳的代码,并且另一个好处是,您将随时为这次面试做好准备😉
解决挑战的站点包括hackerrank , leetcode , topcoder和spoj 。
鼓励好东西
如果您喜欢您同事的承诺,那么请不要犹豫,发送一条消息并赞赏或赞扬有助于您在stackoverflow上回答的问题,或者鼓掌阅读有关媒介的文章,这些文章为您提供了免费的智慧或加注您在github上签出的有趣项目的机会。 鼓励他人可以帮助他们发挥最好的才能,最终也可以帮助您。
不要躲在图层后面
您发现您正在使用的API存在问题,但由于您是“前端开发人员”,因此无法解决。 我认为这是一种不良态度。 编程的基本原理,例如保持代码DRY,在类中看到多个用例时使用抽象,捕获所有流控制路径的异常等,几乎适用于堆栈的每一层。 牢记基本原则,它可能会帮助您解决您认为无法解决的问题,因为您没有在代码库的那部分工作。
![](https://i-blog.csdnimg.cn/blog_migrate/eaba6255a2d444b03f665d66281c3f0f.gif)
结论:正如我在上面所说,阅读本指南将帮助您了解尚未做的事情,但要超越这些界限,您必须付出努力和纪律 🙂
如果您喜欢该帖子,请不要忘记与其他开发者共享。 希望它有用!
Adyen的技术职业
我们正在寻找有才华的工程师和技术人员来帮助我们建立全球贸易的基础设施! 如果您想了解更多信息,请查看开发人员空缺 ,或查看我们的职业页面。
翻译自: https://hackernoon.com/how-not-to-be-a-mediocre-developer-c59a49f97fc5
微擎老虎 请联系开发者!