提高團隊代碼質量

近期看到一篇博客。大致的意思就是網管將原本混亂不堪的交換機整理整齊了,起初交換機是圖2那樣的,由于越來用的人越多,操作的人越來越多。終于成為了圖1那個樣子。這不禁讓我想到了項目中的代碼。原先在剛上線的時候談不上是完美的,但它總歸是整齊的。可是由于中間人員流動,bug改動等等原因吧,終于的結果就是代碼一團糟。為什么會出現這種情況呢?

? ? ? ? ??

圖1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2

權限(權利)

拿交換機來說,當自己的網絡不通暢的時候自己能夠隨便進出機房對交換機進行操作,插拔自己的網線的時候僅僅要能讓自己的網絡通常,那么網線亂一些那又有什么關系呢?第一個人是這樣想的同一時候也是這樣做的,緊接著第二個、第三個……久而久之就成了圖1的樣子,混亂不堪。

同理代碼也是一個道理。自己須要實現一個功能,在原來代碼的基礎上進行改動,僅僅要自己的功能好使代碼之間的耦合大一些又有什么關系呢?剛入職的第一個新人是這么想的也是這么做的緊接著第二個、第三個……久而久之倉庫中的代碼就變成了如今的這個樣子。慘不忍睹。

沒有權限的人能夠操作本不該操作的東西,終于一定會一團糟。由于的人們在自己焦頭爛額的時候才顧不上會不會影響他人,盡快將自己手頭的棘手的問題解決掉才是重中之重。

對于權限管理最經典的一句話就是:權限越低犯錯的機會就越少

所以新人直接提交代碼到代碼庫是欠妥的。

責任

出現這種情況是由于大家僅僅關心自己的一畝三分地。“各掃自家門前雪。休管他人瓦上霜”是每一個人的不變信念,問題是“他人”并非別人,是自己人。他人“瓦上霜”事實上就是以后自己的“門前雪”。

事實上責任這個詞就是自私的放大版。胸懷有多寬廣責任就有多重大。

記得讀過一篇關于代碼質量的文章,當中說到一個理論叫破窗理論:一個房子假設窗戶破了,沒有人去修補,隔不久。其他的窗戶也會莫名其妙地被人打破。一面墻。假設出現一些涂鴉沒有被清洗掉。非常快的,墻上就布滿了亂七八糟、不堪入目的東西;一個非常干凈的地方,人們不好意思丟垃圾。可是一旦地上有垃圾出現之后。人就會毫不猶豫地拋,絲毫不覺慚愧。

非常多情況下代碼晦澀難懂并非一下子就變成這個樣子的。冰凍三尺非一日之寒。

從第一個不負責任的人開始代碼變得越來越難以維護。假設在提交代碼之前有人(幾個人)去review要提交的代碼,相信出現故障的可能性就大大減小。試想自己的代碼是要被全世界程序猿讀的,相信你會提高自己的代碼質量。

行動

發生了這種事情,終于是要解決的,假設希望永遠不發生這種事情。這是一種理想狀態,僅僅有說前面的工作我們盡可能的做好來減少這種事情出現的概率。

可是。一旦發現了問題還是須要解決的。并且是立馬解決。否則錯誤會隨著時間的推移解決成本也就越來越大。不要借口說如今沒時間,等有時間了怎樣怎樣吧。如今沒時間以后更沒時間,由于以后僅僅會比方今更忙。

(什么?項目緊沒時間,那么請跳槽,對于一個沒有規劃急功近利的公司是須要被社會淘汰的,所以你的不離職就是在姑息整個軟件行業的不良風氣)

Review初期是能夠避免非常多低級錯誤的,可是到了后期就流于形式了,由于一直負責review的負責人已經疲憊了。

況且非常多嚴重的bug并非review就能發現的,Review僅僅能找出顯而易見的錯誤。

所以,

第一、負責review代碼的人決不能固定,并且一份代碼能夠多人review

第二、不放過不論什么一個Bug,尤其是由于改動或者新用例帶來的bug。這些bug后面就藏著不整潔的代碼,須要整個團隊耐心的將其挖掘出來解決掉。


?

都說高質量的代碼須要高水平的開發人成員,事實上高質量的代碼,需要的是關懷開發商

版權聲明:本文博客原創文章,博客,未經同意,不得轉載。

轉載于:https://www.cnblogs.com/zfyouxi/p/4621776.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273145.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273145.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273145.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

webrender 查看是否開啟_想要體驗極致順滑的網頁加載體驗?手動開啟Firefox WebRender渲染引擎...

昨天我們提到火狐瀏覽器最新穩定版Mozilla Firefox v67 版將面向部分用戶開啟WebRender渲染引擎測試。據火狐瀏覽器團隊介紹當用戶開啟新的渲染引擎后 , 網頁加載幀率能夠從現有的 20FPS 直接提升到 60FPS。不過新的渲染引擎本身并不是用于加快網頁的加載速度,而是…

NOIP201307貨車運輸

試題描述A 國有n座城市,編號從1到n,城市之間有m條雙向道路。每一條道路對車輛都有重量限制,簡稱限重。現在有q輛貨車在運輸貨物,司機們想知道每輛車在不超過車輛限重的情況下,最多能運多重的貨物。輸入第一行有兩個用一…

knime如何連接mysql_knime怎么連接MySQL?

首先判斷一下網絡是否通:如果在局域網相同網段內那網絡是通的,不同網段間需要看是否有做隔離,如果沒有隔離,那就也是通的。測試方法可以用telnet 數據庫IP 數據庫端口號的方式探測一下 例如 telnet 192.168. 1.124 3306創建用戶&a…

Asp.net Vnext IValueProvider

概述 本文已經同步到《Asp.net Vnext 系列教程 》中] IValueProvider 根據ValueProvider獲取數據&#xff0c;在對數據進行綁定 代碼實現 private class CustomValueProvider : IValueProvider{//判斷否具有指定的前綴public Task<bool> ContainsPrefixAsync(string pref…

ECNUOJ 2615 會議安排

會議安排 Time Limit:1000MS Memory Limit:65536KBTotal Submit:451 Accepted:102 Description 科研人員與相關領域的國內外同行進行適時的接觸與充分的交流&#xff0c;對于促進提高他們的科研業務水平&#xff0c;并及時掌握科研動態是十分必要而且重要的。ECNU為了走在科技…

Kafka架構設計:分布式發布訂閱消息系統

【http://www.oschina.net/translate/kafka-design】&#xff08;較長&#xff1a;很詳細的講解&#xff09; 【我們為什么要搭建該系統】用作LinkedIn的活動流&#xff08;activity stream&#xff09;和運營數據處理管道&#xff08;pipeline&#xff09;的基礎。作為多種類型…

拼團php開發邏輯思維羅振宇_2019羅胖羅振宇跨年演講手動整理稿,看了兩遍

2019羅胖羅振宇跨年演講看了兩遍&#xff0c;手動整理文檔1.歲月不饒人&#xff0c;我們也沒饒了歲月2.你有你的計劃&#xff0c;原來這個世界另有計劃&#xff0c;既然這個世界另有計劃&#xff0c;我們就得重做計劃3.做事的人和不做事的人4.宏觀是我們必須忍受的&#xff0c;…

URLConnection

轉載&#xff08;http://www.cnblogs.com/shyang--TechBlogs/archive/2011/03/21/1990525.html&#xff09; 關于URLConnection&#xff0c;網上很多回答都是對API的翻譯&#xff0c;很崩潰&#xff0c;我是看了很多之后&#xff0c;然后看API才發現的。此后我會吸取教訓&#…

java文件拷貝_Java實現文件拷貝的4種方法

第一種方法:古老的方式public static long forJava(File f1,File f2) throws Exception{long timenew Date().getTime();int length2097152;FileInputStream innew FileInputStream(f1);FileOutputStream outnew FileOutputStream(f2);byte[] buffernew byte[length];while(tru…

今夜的硬件之旅

6腳繼電器&#xff1a; 匯科繼電器HK4100F-DC6V-SHG ①3A觸點切換能力 ②具有一組常開&#xff0c;一組轉換觸點形式 ③超小型&#xff0c;標準印刷制版引出腳 ④有塑封型 Outline&#xff08;L*W*H&#xff09;外形尺寸&#xff1a;15.510.511.8 Contact Date觸電形式&#…

mp3 pcm java_Java mp3文件轉pcm文件

Java mp3文件轉pcm文件package cn.zpy.util;import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFileFormat;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;imp…

有1~5000一組亂序數列,請使用偽代碼對該數進行排列

先把1-5000組成一個數組 冒泡排序法 $arrarray(1,2,3,4,5,6,7,8,9.....5000); $totalcount($arr); For($i0;$i<$total;$i){ For($j0;$j<$total-1;$j){ If($arr[$j]>$arr[$j1]){ $tmp$arr[$i]; $arr[$j]$arr[$j1]; $arr[$j1]$tmp; } } } 快速排序法 $arrarray(1,2,3,4,…

java 類型轉換方法_java數據類型轉換的常見方法

public class Testfun {public static void main(String[] args) {// (一)跨Number父類的類型轉換// 1、str轉int > Integer.parseInt(s1)String s1 "19";int i2 Integer.parseInt(s1);// 數字str轉化為對標的intSystem.out.println("i2" (i2));// 2…

json to java 在線_Json轉Java對象 (全網最簡版)

Json2Java(全網最簡版)json字符串轉Java對象,生成對應文件描述&特點簡易的Json轉Java工具,滿足基本日常使用(特殊需求可自行增添,代碼就一頁)在網上找了好些個這類工具,不是只暴露iead插件就是復雜&沒文檔,于是自己寫了個全網最簡版Json2Javaonly one file用法public c…

Material design 色彩

八月已過去&#xff0c;九月剛來到~暑假已過去~九月上學季~~又迎來了一個桂花飄香的季節&#xff0c;你是否有了新的目標和計劃~~所以在九月初始給大家帶來一個全新的東西&#xff08;ps&#xff1a;對于我來說是全新的東西&#xff09;——Material Design~~九月讓我們一起好好…

java logging api_Java Logging API - Tutorial

1.2. 創建一個logger包 java.util.logging提供了日志的功能&#xff0c;可以使用類似于下面的代碼來創建一個logger&#xff1a;import java.util.logging.Logger;private final static Logger LOGGER Logger.getLogger(MyClass.class .getName());1.3. LevelLog的等級反映了問…

內存查看工具RAMMAP說明

參考 Technet Process Private: 分配給單一Process專用的內存 Mapped File: 用來儲放檔案內容快取(Cache)的內存空間 Shared Memory: 標注給多個Process共用的內存分頁(Page&#xff0c;內存管理單位) Page Table: 用來描述虛擬內存位址的分頁表(裡面是一筆一筆的PTE&…

php接口和java接口_java和php接口的區別是什么

java和php接口的區別是&#xff1a;1、php接口中的抽象方法只能是public的&#xff0c;默認也是public權限&#xff1b;2、java中私有方法使用private修飾&#xff0c;供接口中的默認方法或者靜態方法調用。【相關學習推薦&#xff1a;php編程(視頻)】php:規范&#xff1a;接口…

成都優步uber司機第四組獎勵政策

萬能的優步成都團隊放出了優步司機第四組&#xff0c;一二三組獎勵已經驟降&#xff0c;在月末放出第四組車主檔&#xff0c;這是要讓一切歸于平靜的節奏么&#xff01;&#xff01;&#xff01; 滴滴快車單單2.5倍&#xff0c;注冊地址&#xff1a;http://www.udache.com/如何…

java hql多條件查詢_使用hql語句怎樣實現多條件查詢

展開全部這里只寫了DAO和業務62616964757a686964616fe59b9ee7ad9431333264623331邏輯組件、ACTION的具體實現類&#xff0c;PO和和接口自己應該會寫吧&#xff0c;HQL采用的是結合SQL的那種寫法&#xff0c;增刪改查全在里面了&#xff0c;修改下馬上就能跑了&#xff0c;不清楚…