少编码多思考:代码越多 问题越多

学习语言而不是框架

我喜欢PHP、Python和JavaScript,喜欢用他们做些东西。但我却不是Symfony、Django、jQuery开发人员。

我认为这有很大的区别。一个人很有可能成为一名jQuery程序员而非JavaScript,也有可能成为Django程序员而不是Python。在实际应用中,的确存在许多有价值且非常实用的工具和框架,但如果我仅知道如何使用一个框架,我想表达的观点是在工作上只使用合适的工具其实会给任务带来一些限制,你可以查看一下,看看你用的工具,看看你用的框架。以我的经验来看,一些复杂的全栈(full-stack)框架并不是非常合适的工具,尤其在灵活性和性能方面都不是太好。

集中精力学习一门语言会让程序员变的更加灵活。全栈式复杂框架可以帮助我快速的构建某个产品,但当我需要一个不属于框架范围内的解决方案时,它反而会变成一种伤害。我经常会采用“plug和pray”方法进行开发,当我发现某个库或插件可以满足需求时,我就会把它们应用到产品里。这样可能会使应用程序快速推出,但在以后的道路上会留下很多障碍。

此外,学习全栈框架和学习新语言一样复杂。它们通常都有复杂的体系结构和术语,并且有些部分并不适用于其他框架和工具上。当然框架也有许多好处,但前提是你必须要懂这门语言,然后才能理解其真正的工作原理,所以我宁愿花时间学习更多关于语言本身的东西,并且把所学的技能应用到其他语言或者库上。

构建小模块

有些小型的单元代码是很好很讨程序员们喜欢的,因为越小越容易理解且很难把它弄的很糟,所以限制编写冗长复杂的代码是非常重要的。

所以有目的的构建一些小模块——尽可能的接近需求目标。它们应该是独立的块,单纯地解决某方面问题,但是把它们结合起来时,就可以解决许多大型的、复杂的问题。

像这些简单的模块代码修复起bug来也会非常容易。因为这些单独的块通俗易懂,一看就会知道其用途。如果模块是自我包含的,那么测试起来会更加简单。

代码越少越好

套用Biggie Smalls的一句话:“代码越多,问题也就越多”。

谁都喜欢管理少的代码。估计大家都有过这样的体会,当审查一个功能模块的代码时,如果代码很多很乱,第一印象肯定不好,相反,如果该模块代码简洁明了,你会非常愉悦。更通俗点讲就是代码越多,管理起来也就越困难:搜索代码库的时间会变长、查看文件导航也需要较长的时间、跟踪执行也会变的困难等。

你是否发现,代码审查、还有你使用的工具,很大程度上都是用来减少代码量的。那些庞大的库和长代码似乎会溢出人们的大脑缓冲区。当我在追踪一段较长的源码或执行跳跃好几个源文件的功能时,我会感到很苦恼。这就是为什么我会喜欢给语法进行着色的编辑器,并且保持一致的空格对我也非常有帮助。

除了喜欢管理较少的代码外,我还支持开发者们尽量简化代码。程序员要为应用程序所使用的代码,不仅仅是自己编写的部分负责——甚至是这些应用里的每行代码。这也就意味着要替这些应用里出现的bug或者安全漏洞负责。

你会在程序中使用自己不理解的代码吗?这并不表示我从不使用他人的代码——坦白说,世上有许多优秀的程序员,但是在应用他人代码的时候,你必须理解代码,因为应用程序里的每行代码都很重要。在编码时千万不要忘记思考,编写最少代码的背后应该是多思考,这样就不会给自己带来不必要的麻烦。

编写简单、有用可读的代码

编写容易理解的代码,少编码多思考,这样完成一个功能就会很快,生产力就会得到提高。

当然,我也希望代码是可验证的。并且我一直认为简单、模块化的代码是更容易被测试。

代码应具备的另一特征就是可读。代码应简洁明了,语义清楚。在编写代码时,我会思考其他程序员在第一眼看到它的时候会花多长时间来理解。或者一两个月后我自己能一目了然吗?正如大家熟知的那句编程谚语:任何一个傻瓜都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码。当我试图发现它们工作原理的时间越少,做的事情就会越多。

但是很少有人能坚持这些规则,如果我说是,那么我肯定是在撒谎。有时候我也会很懒惰,甚至由于时间限制,我会编写一些复杂的、难以理解的代码或者使用没有审查的库来实现某个功能。想要在短期内编写简单、清晰的代码会很困难——它需要更多的纪律和不断的技术评估。特别是那种对时间敏感的项目,实行起来将会更难。

但是,当你花时间和精力去做的时候,你会发现功夫不负有心人——不仅仅对自己有帮助,还会给其他团队成员带来很多益处。

转载于:https://blog.51cto.com/13884944/2160514

少编码多思考:代码越多 问题越多相关推荐

  1. 误码率越高越好还是越低越好_夜间护理步骤越多越好还是越少越好?NFF

    现在很多人都知道了夜晚是护肤的黄金护肤时间,有些很聪明的姐妹就从夜晚着手,使用很多种护肤品,希望达到事半功倍的效果,但好皮肤不常有,皮肤问题却常有!既然如此,不少人就问了,夜间护理的步骤到底是越多越好 ...

  2. 多些时间能少写些代码(转自酷壳 – CoolShell.cn)

    我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些. @左耳朵耗子:聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编 ...

  3. 多些时间能少写些代码

    我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些. @左耳朵耗子: 聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着 ...

  4. 不论你技术多牛逼,30岁后,这3件事越早做越好!

    见字如面,我是军哥! 在互联网圈有个流传很广的段子,讲述了互联网从业者的职业发展路径: 码农:25岁软件工程师→28岁高级软件工程师→32岁架构师→35岁外卖骑手 运维:25岁运维工程师→28岁高级运 ...

  5. 不论你技术多牛逼,30岁左右,这3件事越早做越好!

    在互联网圈有个流传很广的段子,讲述了互联网从业者的职业发展路径: 码农:25岁软件工程师→28岁高级软件工程师→32岁架构师→35岁外卖骑手 运维:25岁运维工程师→28岁高级运维工程师→32岁运维总 ...

  6. python版本越高越好吗-5个Python特性 越早知道越好的

    Python Python开发 Python语言 5个Python特性 越早知道越好的 Kirill Sharkovski 发布在 Unsplash 杂志上的照片 AI开发者按,Python 是近十年 ...

  7. 加班越久故障越多,如何跳出程序员的恶性循环?

    如何让每一位可爱的工程师少加班.不加班?阿里巴巴技术专家张冠楠,在质量保障体系建设.持续集成领域.敏捷实践领域和研发效能领域方面具有丰富的经验和心得.今天,冠楠将用阿里研发团队的实际案例,生动说明如何 ...

  8. 大四狗:我的java历程——越努力,越幸运。

    大二的时候写过一篇博客,< 作为一名计算机学院普通的大学生如何提高兴趣敲代码 >,没想到当时引起了很多同学的共鸣,有的人觉得受到了鼓舞,有的人觉得看到这篇文章已经大四,要改变也太晚了.然而 ...

  9. 【越好奇,越强大】伯克利研究人员使用内在激励,教AI学会好奇

    你可能不记得第一次玩"超级马里奥兄弟"是什么感觉,但试着想像一下:蓝色的天空,棋盘石的地面,还有一个蹲着的红色男人在静静等待.他面向右方,你把他推到那个方向.再多走几步,就会看到一 ...

  10. 【科创人XTGO】别被《人月神话》毒害,“组织越大效率越低”是误区

    与上千位科技创业者共同关注科创人的成长心路. 绩效考核是所有技术管理者的"持久的痛".在本文中,方云研发绩效创始人于人从绩效的概念开始,分析绩效考核与绩效管理的异同,从四维组织力模 ...

最新文章

  1. HDOJ 1098 Ignatius's puzzle
  2. Vware Workstation pro 12|虚拟机
  3. 高通5G开始挤牙膏?骁龙865+发布,性能小幅提升,一加听了要笑,魅族看了会流泪...
  4. python3 socketserver模块 网络服务编程框架
  5. Tomcat9URL不支持特殊字符解决方案
  6. 开源推荐:.Net Core3.1 + EF Core + LayUI 封装的MVC版后台管理系统
  7. caged系统pdf_建筑行业单词中英文对照教材.pdf
  8. div背景透明_为什么css3实现background-image和半透明边框这么麻烦
  9. 最速下降法的C语言实现
  10. 模拟linux终端测试java,介绍一个在线的Linux,没有安装Linux或者虚拟机不喜欢用的童鞋可以简单的用这个jslinux测试各种命令...
  11. access成绩为非负数_初一数学期末复习,有理数应用题专训,正负数实际意义是关键...
  12. python进阶(课程学习笔记)
  13. Spring提供的iBatis的SqlMap配置
  14. php对接海康视频教程_web对接海康威视rtsp视频流
  15. c语言 opengl函数魔方,《基于OpenGL的3D旋转魔方实现汇总》.doc
  16. “汇新杯”互联网产业模式专项赛介绍
  17. 关于判断单峰数组的几种方法
  18. mysql 查询临时表_MySQL临时表与内存表
  19. 值得收藏|基于全球切片解析标准TMS的瓦片规则
  20. 职场遭遇“小人”,你如何应对?

热门文章

  1. LeetCode -- Merge Two Sorted Linked List
  2. Python覆盖率分析工具_Coverage
  3. leetcode - Anagrams
  4. 再读simpledb 之 SQL语句解析(1)
  5. 在vs中创建Analysis Services项目
  6. Oracle 统计信息收集
  7. c语言的数组长度问题
  8. 求解最长回文串 manachar算法
  9. fenby C语言 P17
  10. 网站如何优化才是成功的