如何通过10行代码辨别一个程序员是大神还是咸鱼?
辨别一个程序员的水平唯一的办法就是看 产出质量。
关键字:普通程序员
——————————————无耻割————————————————————
算法和数据结构都是锦上添花,并非是雪中送炭。而一个程序员的水准大致上是可以通过之前的代码质量估算出来的。【如果你可以获得此程序员的真实编写的代码,比如原创的Github】。
举个栗子:下面是我最近在单位一个同事写的代码,Java语言
private boolean checkProportions(String str, Integer grades) { String proportion = str; for (int i = 1; i < grades; i++) { String st = proportion.substring(proportion.lastIndexOf(",") + 1); if (st.equals("")) return false; proportion = proportion.substring(0, proportion.lastIndexOf(",")); } if (proportion.equals("")) return false; str = str.replace(".", ""); str = str.replace(",", ""); for (int i = str.length(); --i >= 0; ) { int chr = str.charAt(i); if (chr < 48 || chr > 57) return false; } return true; }
大致上的功能就是将 1,2,6.2,4,1 的字符串判断每一 ‘,’内是数字,而且长度符合规定
这样的代码看上第一眼就觉得非常的丑陋。所以在我的要求之下,进行了一次重构。
private static boolean checkProportions(String str, int grades) { String[] proportions = str.split(","); if (proportions.length != grades) { return false; } for (String s : proportions) { if (!NumberUtils.isNumber(s)) { return false; } } return true; }
这里看上去差不多就Ok。这样的代码其实也并没有用到什么数据结构和算法,就是很简单的字符串处理。
实际情况:在我们写的绝大多数的代码里面,大部分属于业务逻辑,极少部分的代码需要使用到算法和数据结构,在这样的情况下,我们能使用的到的技能最为关键的是让代码如何更加合理。而让代码更加优秀的方式是通过千锤百炼的重构,而重构是极大的考验一个程序员耐心和能力的东西。
质量的范围广泛,我从下面几个小方面聊聊。
出货能力:如果一个程序,算法再精妙,不能出货都是扯淡,我看过某某大神,算法溜得很,但是一个人完全做不到按照工程需要把事情给做完。
优化能力:并没有一个程序是一步到位的,一个工程的交出去可运行了,那才是第一步,很多时候随着业务的增大,对性能的要求越来越高,有一定对于代码优化的能力也是比较重要的。
调错能力:项目越大,遇见的Bug也就是越离奇,这个时候需要强大的Debug能力,找出那个最为关键的错误点,甚至于追溯底层框架的源码。
技术掌控:你项目能用Spring,Hibernate等等框架,但是有没有想过,这些技术你真的可以掌控么,如果有一天你的框架版本需要升级,真的做得到么?甚至于从Hibernate转为MyBatis。
算法和数据结构是影响到一些核心区的问题,但是其他的一些技能,比如面向对象的架构设计,代码的低耦合,那都是对整个项目有着直观改善的技能。并非是贬低算法,而在实际工作中,有太多比算法更重要的问题了。
最后补充一点吧:从善如登从恶如崩,毋以恶小而为之,此古人诚不欺我。
在这里我相信有很多想要学习Python的小伙伴,我自己是一名从事了多年开发的Python老程序员,辞职目前在做自己的私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的学习干货,从最基础到,各种框架都有整理,送给每一位Python小伙伴,想要获取的可以关注我并在后台私信我:学习,即可免费获取。人生苦短,我用Python!