写程序不是为了炫耀自己的技术,是要给公司创造价值,要确实帮助使用这个程序的人。以及之前说过的,当程序员就是为了提高社会效率。
写高效的代码是每个程序员的追求,写易懂的代码是每个程序员的美德。
易懂的代码首先是有规范的,从目录结构到代码风格,在项目建立初就应该确定,可以写进项目文档中,文档用于给初见项目或是接手的程序员一个概览,介绍一下整体结构,技术栈,以及一些坑。
技术选型注意不要选择没人用的(找不到帮助)、无人维护的(发现 bug 会让你很痛苦)、很难用的(你自己懂也有可能要方便被人懂,选择框架尤其注意,这也是 vue 热门的原因吧)。
控制代码风格可以使用 eslint 和 prettier。前者用于代码规范控制,后者用于格式化代码。统一的格式化工具配置也是十分必要的,尤其在协作的时候,如果两边的格式化格式不同的话,diff 也是地狱般的体验。
编码不规范,维护两行泪
在有规范之后,还要注意不要为了追求极简写些难懂的代码,你必须控制简洁和可读性间的平衡,例如
i = i ? (i < 0 ? Math.max(0, len + i) : i) : 0
而有时候,hack 是无可奈何的事情,这个时候必须做好注释。但是需要注意,注释描述的不是做什么(what),而是为什么(why)。
一段可读性过关的代码中完全能看出它在干嘛,看不出来做什么的代码很大几率是不及格的代码了。
可读性主要由命名入手,变量名称对整段程序理解的重要性不言而喻;另外,对于一些功能不太好看出来的几个语句的集合,即使不会复用,也可以将其包装成函数,通过函数命名告诉读程序的人(而不是电脑)这一段代码的作用。
/* 还有一个例子是把对象绑到 vue 的 this,然后不 import 直接用
对于这个做法...看你喜欢吧
毫无疑问对于模块化的项目,一个模块就不应该挂在其他地方
(虽然这么挂上去可能会省掉 webpack 的模块调用,让你的程序快一丁丁丁丁丁丁丁点)
如果你真的懒到不写 import
请一定要在绑定的变量加上 $
至少你这个时候全局搜索还是很容易找到来源的
*/
Vue.prototype.$axios = Axios
有了规范的编码,仍不足以让整个代码库足够简单,控制代码复杂度是下一个目标。
一定要理解你的所做系统的需求,否则只会在误解和错误的恶性循环中越陷愈深,浪费珍贵的时间。
我最近就接手重构一个前后端耦合的项目,业务逻辑很是复杂,理解需求这一步绝不能逃避,只能一个个细节问清楚。
不要看到大佬提什么需求都一股脑加进去,即使所提的需求很简单,但你需要有足够的时间评估这个功能。
新增需求和需求修改上也是一个道理,不能破坏以前的功能,保证整个系统的纯洁。
所以优雅地添加功能真的很耗时间。
至于真的不可行的需求,请勇敢说不。如果对结构影响很大的需求最好不要改了。不过这是理想,中国程序员好像没有什么地位
在工时预估方面,可以尝试拆分任务,并且要假设一切都会更花时间。
拆分任务不仅可以让你更准确地估计实现时间,还能让你的工作更有条理。
至于优先度,还请结合上司指令和实现难度自己衡量吧。
总之,一个完美的系统不是一步就能造好的。
对于未来的功能,你可以留个后路,但不要提早瞎做“自以为需要”的功能。不然到时候写了一堆没用的代码都是浪费时间,还可能让提高程序复杂度。
优化方面,参考著名的“不要过早优化”。让正确的程序更快,要比让快速的程序正确容易得多。开发和优化当作两个独立的步骤来做。
Premature optimization is the root of all evil.
维护是软件开发重要而困难的一环。不过如果你按着上面所说的做,我相信...维护不会是难事。
但是如果你的代码写得很恶心,你会为之付出代价。
答应我:宁愿在实现功能时很痛苦,也不要在维护的时候更痛苦。
重复的轮子
伟大的开源模式让整个编程界发展加速。
可以站在巨人肩膀上,就别重复造轮子。
除非你真的很闲(工作不饱和哦~),或者你找到的轮子实在不合心意(如老旧、不优雅、功能太繁杂)
重复的工作
「重复」是程序员最大的敌人!
计算机就是负责给你做重复的事情,程序员为什么还要做哦?教计算机做就好了!
你可以依赖 node.js 写处理程序处理你的文档,在编辑代码的时候可以活用快捷键修改代码。
自我开发
程序员拒绝 996,但是在家不意味着闲着,你仍需要为自己的脑子投资。
这一行变化还挺快,虽然我也真的完全不会看未来走向,不懂什么语言和技术会在以后更有价值,但是尽量不要局限与学习单个语言,也不要因为是前端就完全不学后端。
我觉得这样才能当一个有格局的程序员。
解决问题
If you can't explain something in simple terms, you don’t understand it. — Richard Feynman
如果你不能流利解释一个问题,那说明你还是没懂,也就是还没真正解决这个问题。若是没真正解决问题,便不能举一反三解决更多类似问题。
解决问题要明白问题如何产生,先思考,后行动。行动无解可以到谷歌搬救兵,搜索不到的话……
最终方案就是到对应社区提问,但是提问同样是一个学问,请看 How To Ask Questions The Smart Way。
生产力
不是代码越多生产力越高,程序员应该都懂,至于老板怎么看,就不得而知了
One of my most productive days was throwing away 1000 lines of code. — Ken Thompson
最后,请让上面的思维铭刻于心中,工作时条件反射地记起
来自:https://ssshooter.com/2019-04-13-developer-mindset/
吃饭睡觉写代码,基本都程序猿的大部分生活了,作为从事最累的职业之一的我们终于有了自己的节日,那就是1024。1024向程序员致敬,向自己致敬,向未来致敬。
互联网注定是一个不能安宁的行业,有一些人在努力引领变化,有一些人在努力适应变化,有一些人在被时代的浪潮淘汰。这个世界唯一变的就是变化,人生唯一不能停的就是学习,说到底,要想不被淘汰,只有不断的学习。
国外有个词叫做10x Programmer,直译是以一当十的程序员。我并不认为一个技术大牛能完成10个普通程序员的工作,技术大牛会花1/10的时间把工作做完,然后用剩下9/10的时间平衡生活、爱好和未来,所以我仅把10x Programmer叫做10倍速的程序员。
仍是要永远 ctrl+v,永远拿来主义。仍是要时时刻刻对美好满怀期待,对未来充满渴望,对经典心怀敬畏。要记住啊,能原创而不原创,有源码而远源码,才是最无知的成熟。
优秀程序员有哪些好的习惯:1. 想清楚,再动手写代码,2. 不交流,就会头破血流,3. 文档没人看,但还是要写,4. 一定要写注释,5. 别指望需求会稳定
我曾经说过,程序员不是一般的人,是具有某种超能里的人。但问题是,程序员往往意识不到自己的这种特异功能,在他们的眼里,会认为自己很普通,跟常人一样,所以,程序员能做到的事情
分析自己的处境; 做适合自己的选择; 以成长为目的,担负起更多责任,打破对做事的认知; 把握机遇,去锤炼自己; 抛弃一些懒惰,多一些积极;向牛逼的人靠近,向给你提供条件帮助你学习的老师靠近。以上结合了我自己的经历,希望文章能更形象。
现在身处跳槽高峰季,作为即将跳槽的我,在这里分享几点建议给大家。众所周知,找工作的前提是面试,面试的前提是过了简历,过了简历的前提是你怎么投。
程序员在其职业生涯中,健康问题尤为突出。但是大部分程序员只顾码字,却往往忽略了自身的健康问题。这或许是因为写代码太入神,也或许是因为来自老板的压力太大。
一个厉害的程序员,都会有一个牛逼哄哄、有辨识度有个性的英文别名。在公司同事中很更好的称呼,这篇文章翻译整理了一下适合程序员的英文名字
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!