主頁君注:估計不少童鞋還記得這篇熱文《老碼農(nóng)冒死揭開行業(yè)黑幕:如何編寫無法維護的代碼》,今天推薦吳延毅的這篇文章。 配置文件篇 1. 配置文件一定要寫不只一個 比如 1.conf,2.conf,3.conf,... 而且這n個配置文件一定要分散在不同的目錄下。才能讓別人部署移植你這個項目的時候永遠也修改不完配置文件。 2. 配置文件的載入一定不要在項目初始化的時候載入 比如我們這個項目是一個服務(wù),一定要在每次socket請求來臨的時候,我們再去讀取一遍配置文件,首先這樣我們能顯著降低本服務(wù)的運行效率(磁盤IO的速度你懂的)。 最關(guān)鍵的是能讓別人部署完這個項目的時候,明明配置文件寫錯了,但是部署運行仍然沒有問題, 直到外部請求進來的時候,這個程序才華麗的崩潰掉。讓人類知道程序的崩潰是如此的防不勝防。 3. 配置文件的格式一定要惜墨如金,只寫value不寫key 比如在如下配置文件
讓別人去猜,這到底是個什么東西,依次到底是哪些調(diào)用。 你懂的,預測和猜測都是程序員的必備技能之一,都大數(shù)據(jù)時代了,沒點算命的天賦你以后還怎么搞大數(shù)據(jù)分析和預測?! 4. 你寫的服務(wù)要監(jiān)聽的端口一定不要寫在配置文件里面,一定要寫死在代碼里面 這樣,當別人部署你的項目的時候,改完了配置文件,很開心的啟動之后發(fā)現(xiàn)報錯退出。 哦,原來是端口已經(jīng)被占用。那我修改個端口唄,怎么修改,少年,去慢慢看源代碼吧。哈哈哈。 日志篇 5. 一定不要打日志 打個毛日志?哥在eclipse,vs里面都是直接單步調(diào)試,舒暢無比。 什么剛啟動加載配置啊,配置文件找不到啊,配置所需要的端口被占用啊之類的錯誤,都一定不要打出日志。 什么?每次請求進來到處理完成,都要打一條INFO日志?煩不煩? 一定要讓別人啟動整個項目之后,可以看到明明在運行。但是讓外界死活調(diào)用不了。 打開xxx.log 文件一看,空蕩蕩,只有一句淡淡的“service started.” 仿佛在訴說著什么。 6. 打日志一定不要暴露時間,文件名等關(guān)鍵信息 當然要寫的模糊一點,要知道如果日志寫的太清晰,程序一出錯,別人就知道錯在哪里。 別人就可以根據(jù)錯誤時間和文件名定位到你的錯誤代碼,這樣讓你的代碼多沒面子。 最好是在出錯的地方打出一行”here is wrong.”,深藏功與名。 讓接管或者部署你項目代碼的人看得淚流滿面。 外部依賴 7. 外部依賴一定不要包括進deps/之類的目錄下 別人肯定以為拷貝了你整個目錄的代碼就可以運行起來,但是你顯然不能讓他們得逞。 要讓他們一運行就報錯,讓他們知道你依賴了各種牛逼的庫,這種庫分布在linux各個匪夷所思的目錄。 甚至你的賬號家目錄是/home/zhangsan/,你硬生生的依賴了/home/lisi/下的xxx.jar或者yyy.hpp文件,讓他們慢慢找吧,幸福就在不遠處。 8. 一定不要使用git/svn之類的版本控制軟件 寫代碼多簡單啊,不就是一個x.cpp y.java。更新代碼就更簡單了啊, 參照著x.cpp寫唄,再來個x2.cpp,2太難聽?那來個xnew.cpp?;蛘邅韨€x20130101.cpp更加奪目。 當整個目錄下面全是各數(shù)字后綴,y3.java, y4.java, y4s.java之后, 什么?別人覺得這樣丑爆了?你要反駁他們說:吵什么吵,iphone也是這么版本命名的好嗎。 9. 一定不要在README.md里面寫明項目的啟動方式和條件 這樣才能給你的代碼加上一層防盜標志,保密程度直逼iphone5s的指紋識別。 沒有你的啟動命令,休想使用你的代碼。 總結(jié) 看上去很荒謬,但是其實以上這些都是實實在在作者親身遇到的。 累覺不愛,以此為鑒。
|
|