辨別一個程序員的水平唯一的辦法就是看
產出質量。關鍵字:普通程序員
算法和數據結構都是錦上添花,並非是雪中送炭。而一個程序員的水準大致上是可以通過之前的代碼質量估算出來的。【如果你可以獲得此程序員的真實編寫的代碼,比如原創的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;
}
這裡小編是一個有著5年工作經驗的前端工程師,關於web前端有一個完整學習web前端的路線,學習材料和工具。需要的夥伴可以私信我,發送“前端”就可以獲取領取地址,免費送給大家。對於學習web前端有任何問題(學習方法,學習效率,如何就業)都可以問我。希望你也能憑自己的努力,成為下一個優秀的程序員!
大致上的功能就是將 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。
算法和數據結構是影響到一些核心區的問題,但是其他的一些技能,比如面向對象的架構設計,代碼的低耦合,那都是對整個項目有著直觀改善的技能。並非是貶低算法,而在實際工作中,有太多比算法更重要的問題了。
最後補充一點吧:從善如登從惡如崩,毋以惡小而為之,此古人誠不欺我。
閱讀更多 web前端學習圈 的文章