[转]如何写出不可维护的服务端程序
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
????????本文是轉(zhuǎn)載,這是原文地址。
配置文件篇
1. 配置文件一定要寫不只一個(gè)
????????比如?1.conf,2.conf,3.conf,...?而且這n個(gè)配置文件一定要分散在不同的目錄下。才能讓別人部署移植你這個(gè)項(xiàng)目的時(shí)候永遠(yuǎn)也修改不完配置文件。
2. 配置文件的載入一定不要在項(xiàng)目初始化的時(shí)候載入
????????比如我們這個(gè)項(xiàng)目是一個(gè)服務(wù),一定要在每次socket請(qǐng)求來臨的時(shí)候,我們?cè)偃プx取一遍配置文件,首先這樣我們能顯著降低本服務(wù)的運(yùn)行效率(磁盤IO的速度你懂的)。
????????最關(guān)鍵的是能讓別人部署完這個(gè)項(xiàng)目的時(shí)候,明明配置文件寫錯(cuò)了,但是部署運(yùn)行仍然沒有問題, 直到外部請(qǐng)求進(jìn)來的時(shí)候,這個(gè)程序才華麗的崩潰掉。讓人類知道程序的崩潰是如此的防不勝防。
3. 配置文件的格式一定要惜墨如金,只寫value不寫key
????????比如在如下配置文件
192.168.0.1 10011 192.168.0.2 10012 192.168.0.3 10013????????讓別人去猜,這到底是個(gè)什么東西,依次到底是哪些調(diào)用。 你懂的,預(yù)測(cè)和猜測(cè)都是程序員的必備技能之一,都大數(shù)據(jù)時(shí)代了,沒點(diǎn)算命的天賦你以后還怎么搞大數(shù)據(jù)分析和預(yù)測(cè)?!
4. 你寫的服務(wù)要監(jiān)聽的端口一定不要寫在配置文件里面,一定要寫死在代碼里面
????????這樣,當(dāng)別人部署你的項(xiàng)目的時(shí)候,改完了配置文件,很開心的啟動(dòng)之后發(fā)現(xiàn)報(bào)錯(cuò)退出。 哦,原來是端口已經(jīng)被占用。那我修改個(gè)端口唄,怎么修改,少年,去慢慢看源代碼吧。哈哈哈。
日志篇
5. 一定不要打日志
????????打個(gè)毛日志?哥在eclipse,vs里面都是直接單步調(diào)試,舒暢無比。 什么剛啟動(dòng)加載配置啊,配置文件找不到啊,配置所需要的端口被占用啊之類的錯(cuò)誤,都一定不要打出日志。
????????什么?每次請(qǐng)求進(jìn)來到處理完成,都要打一條INFO日志?煩不煩?
????????一定要讓別人啟動(dòng)整個(gè)項(xiàng)目之后,可以看到明明在運(yùn)行。但是讓外界死活調(diào)用不了。 打開xxx.log 文件一看,空蕩蕩,只有一句淡淡的“service started.” 仿佛在訴說著什么。
6. 打日志一定不要暴露時(shí)間,文件名等關(guān)鍵信息
????????當(dāng)然要寫的模糊一點(diǎn),要知道如果日志寫的太清晰,程序一出錯(cuò),別人就知道錯(cuò)在哪里。 別人就可以根據(jù)錯(cuò)誤時(shí)間和文件名定位到你的錯(cuò)誤代碼,這樣讓你的代碼多沒面子。
????????最好是在出錯(cuò)的地方打出一行”here is wrong.”,深藏功與名。 讓接管或者部署你項(xiàng)目代碼的人看得淚流滿面。
外部依賴
7. 外部依賴一定不要包括進(jìn)deps/之類的目錄下
????????別人肯定以為拷貝了你整個(gè)目錄的代碼就可以運(yùn)行起來,但是你顯然不能讓他們得逞。 要讓他們一運(yùn)行就報(bào)錯(cuò),讓他們知道你依賴了各種牛逼的庫,這種庫分布在linux各個(gè)匪夷所思的目錄。
????????甚至你的賬號(hào)家目錄是/home/zhangsan/,你硬生生的依賴了/home/lisi/下的xxx.jar或者yyy.hpp文件,讓他們慢慢找吧,幸福就在不遠(yuǎn)處。
8. 一定不要使用git/svn之類的版本控制軟件
????????寫代碼多簡(jiǎn)單啊,不就是一個(gè)x.cpp y.java。更新代碼就更簡(jiǎn)單了啊, 參照著x.cpp寫唄,再來個(gè)x2.cpp,2太難聽?那來個(gè)xnew.cpp。或者來個(gè)x20130101.cpp更加奪目。
????????當(dāng)整個(gè)目錄下面全是各數(shù)字后綴,y3.java, y4.java, y4s.java之后, 什么?別人覺得這樣丑爆了?你要反駁他們說:吵什么吵,iphone也是這么版本命名的好嗎。
9. 一定不要在README.md里面寫明項(xiàng)目的啟動(dòng)方式和條件
????????這樣才能給你的代碼加上一層防盜標(biāo)志,保密程度直逼iphone5s的指紋識(shí)別。 沒有你的啟動(dòng)命令,休想使用你的代碼。
總結(jié)
????????看上去很荒謬,但是其實(shí)以上這些都是實(shí)實(shí)在在作者親身遇到的。 累覺不愛,以此為鑒。
轉(zhuǎn)載于:https://my.oschina.net/songxinqiang/blog/550183
總結(jié)
以上是生活随笔為你收集整理的[转]如何写出不可维护的服务端程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: common_test使用注意事项
- 下一篇: 第四章 连接