摘要:对于程序员来说,更意味着代码的组织,工作成员之间的协作方式。我常犯的一个错误是直接在或分支上直接,而团队是不允许这样做的。
先介绍下背景,博主由运营转行前端,入职一个月,完成了一个相对较大的模块。由于基础相对薄弱,犯下了不少错误,故想记录下来警醒自己和分享各位。
前端技术栈是 ES6 + backbone + react + antdUI,后端使用的 Ruby on Rails。
1.未遵循MVC分离思想MVC说起来非常简单易懂,即model+view+controll,数据-视图-控制分离,特定的模块做特定的事情,便于程序的维护和拆分。我的体验是我有这个意识,却常常写出不合规范的代码。
出现问题的原因是抽象是不符合人的天性的,天性就是怎么简单怎么来,不会顾及到整体架构如何。
解决办法也很简单,改! 不停的修改你的代码,改到完美为止!改的过程中不断告诉自己,我这样写是错的,下次不能这样写。坚持一段时间很有效果。
2.缺少必要的注释大段的if-else缺少注释,让维护者无法快速分辨分支逻辑。特定地方存在hack或复杂逻辑的代码,缺少注释会让后来者不明所以。为了你好,也为了后来者好,请务必加上代码。说不准以后还是由你来维护这段代码。
3.不变和变化的部分拆分程序员中流传着一句话,此处不要写死,将来必改。有经验的程序员会将一些业务层的逻辑抽象出来,写成配置文件,好处就是若后续需求有改变,只需改配置文件即可,肯定不会引入bug。
4.忽视测试部分程序员中又流传着一句话,没有测试的代码等于没写。虽不敢全部赞同,却也有几分道理。从测试用例驱动开发,持续集成,每次编译自动跑测试用例,能够保证系统的稳定同时也减轻测试成本。自己改的的部分做好自测,理解需求,做一个有责任心的工程师。
5.直接操作数据你应该通过方法去操作数据,而不是直接操作数据,这样能够保证你总能操作数据正确。
例如一个类中定义的属性发生变化了,代码中所有涉及到直接操作该属性的代码都需要修改。如果通过方法操作该属性,则仅需修改操作方法,对于外部调用者,类属性变化被屏蔽了,遵循了解耦的原则,代码稳定性大大提高。
hard code=>魔法数字,后果是代码中不明所以的数字到处乱飞,让人读来莫名其妙,全然不动其中的意思。如果你不想你的代码被人破译,请尽情的使用hard code吧
7.写重复的代码DRY,don"t repeat yourself! 这个话题聊起来估计三天三夜也说不完。电脑擅长人不愿意干的、重复的事情,所以电脑解放了人类。那么程序员如何解放自己呢?那就是不写重复的代码,其中一个准则就是三次。一件事情重复三次,就可以从中提取出规律。
Example: 1, 2, 3, ....
Example: 1, 2, ....
8.不懂debug和如何解决问题写代码从debug开始。每一个初学C语言的人都会遇到各种各样的问题,譬如缺了分号,if判断写成赋值。初学者不了解语言和其中的坑,唯一能解决问题的就是一步一步进入代码的执行,找到其中不合预期的地方,即为bug所在。找一个称手的IDE,学习一下debug,80%的问题就会被文档和debug解决
9.不规范的工作流制定合理的工作流程能够减少风险事故的可能和提高工作效率。
对于程序员来说,work flow更意味着代码的组织,工作成员之间的协作方式。
我常犯的一个错误是直接在alpha或master分支上直接commit,而团队是不允许这样做的。所有的修改必须只能通过 merge 的方式合并到主分支,这样的好处在于避免bugfix仅在alpha上处理,而忘记merge到master上。这些都可以通过 CI 或者git hook 等一些脚本或工具完成。
良好的编码习惯不是一日养成的,要从各个细节处不断修正提高。好的代码结构清晰,读来赏心悦目,坏的代码,混乱糟糕,让维护者忍不住骂娘。一位初学者要不断地读大师的代码,汲取其中的养分,不断修改自己的代码,祝愿各位有朝一日都能写出优雅的代码。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81329.html
摘要:对于程序员来说,更意味着代码的组织,工作成员之间的协作方式。我常犯的一个错误是直接在或分支上直接,而团队是不允许这样做的。 先介绍下背景,博主由运营转行前端,入职一个月,完成了一个相对较大的模块。由于基础相对薄弱,犯下了不少错误,故想记录下来警醒自己和分享各位。 前端技术栈是 ES6 + backbone + react + antdUI,后端使用的 Ruby on Rails。 1....
摘要:对于程序员来说,更意味着代码的组织,工作成员之间的协作方式。我常犯的一个错误是直接在或分支上直接,而团队是不允许这样做的。 先介绍下背景,博主由运营转行前端,入职一个月,完成了一个相对较大的模块。由于基础相对薄弱,犯下了不少错误,故想记录下来警醒自己和分享各位。 前端技术栈是 ES6 + backbone + react + antdUI,后端使用的 Ruby on Rails。 1....
摘要:下面列举了我曾经犯过的最严重的个相关的错误有些同样也反映在其他语言数据库的使用上。用服务器端的验证每个字符串,不要寄希望与。登录的时候,必须以一个为依据查找正确的。和是最强有力的竞争者这个两者都是开源的,而且都没有被公司收购。 对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一份子。对于很多新手们来说...
摘要:原文出自本文总结了程序员常犯的个错误。可以看看为什么在中被设计成不可变父类和子类的构造函数以上这段代码出现编译错误,因为默认的父类构造函数未定义。如果程序员定义构造函数,编译器将不插入默认的无参数构造函数。 原文出自:http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/ 本文总结了J...
阅读 3381·2021-09-06 15:13
阅读 1455·2021-09-02 10:19
阅读 2423·2019-08-30 15:52
阅读 859·2019-08-29 15:25
阅读 1498·2019-08-26 18:36
阅读 446·2019-08-26 13:23
阅读 1277·2019-08-26 10:46
阅读 3444·2019-08-26 10:41