代码写成这样,老板把我开除了| IT 巨能唠
生活随笔
收集整理的這篇文章主要介紹了
代码写成这样,老板把我开除了| IT 巨能唠
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天聊一聊遇到過的一些神邏輯代碼,不一定很全,但真心讓小編我自嘆不如啊!
活動還沒開始就結束了。。后面有人挖出來這段神邏輯,大家真是哭暈在廁所了,還好,搶購買手機這種我從來不參加。。就是在前端寫死代碼造成搶購結束的假象,其實請求壓根沒有發送到服務器,或者休眠幾秒直接跳轉到搶購結束頁面,良心點的,點 10 次有一次發到服務器就不錯了,這樣耍猴是不是太好玩了?眾所周知,為了提高服務器的承載能力,現在各類 APP、網頁等都會或多或少加入前端緩存,但上面這種耍猴的代碼也太無恥了。
...
這上面的活動價比原價還貴,真是哭笑不得……類似這樣的代碼,一些程序員在注釋中說明活動的內容,又或者是把一些生產上環境的 IP、端口、用戶名、密碼等敏感信息把在注釋中,好隨時能切換……真是豬一樣的隊友,這樣的程序員不開除么!?定時炸彈啊!
?*?獲取未來幾天的日期
?*?@param?days?指定的天數
?*?@author?微信公眾號:Java技術棧
?*?@return
?*/
public?static?Date?getNextDays(int?days){
????try?{
????????//?休眠指定的天數
????????Thread.sleep(days?*?24?*?60?*?60?*?1000);
????}?catch?(InterruptedException?e)?{
????????e.printStackTrace();
????}
????//?休眠結束后返回日期
????return?new?Date();
}
獲取指定日期用休眠?寫完,已笑暈在廁所。開除的原因是因為沒寫注釋嗎?顯然不是,休眠的邏輯,大家都懂,不需要寫注釋,你注釋寫休眠 1 天也沒意義啊。這個程序員的思維不是一般的牛啊,獲取下一天的日期,居然要休眠等到下一天再獲取,欲哭無淚。想離職找不到借口?那還不容易,哥送你這段加強版,復制這段代碼,提交打包測試上線,坐等開除。
if?(isBoy){
????...
}?else?{
????...
}
布爾值可以直接拿來用,你硬要寫個三元表達式?年底績效考核了,代碼量有 KPI 么?還有類似這樣的:if?(xx1?==?true?&&?xx2?!=??true){
????...
}?else?{
????...
}
還有這樣的:if?(xx1?>?xx2){
????return?true;
}?else?{
????return?false;
}
寫得太優雅了!
????...
}
一個循環也用循環,曾經就遇到過這么一段,不知所云了,要改這段代碼,還要把他叫在旁邊坐著,看著改才行。。for?(;;){
????...
}
死循環這么寫,我們就看不出來了么?
private?final?static int ONE?=?1;
private?final?static int TWO?=?2;
...
看到上面的常量定義,我真想打人,雖然魔法值是沒了,但又定義了一些沒有意義的常量,完全沒有理解修改魔法值的真諦,這和脫褲子放屁有什么區別?上面還只是一個簡單的示例,實際審查情況遠比你想象的糟糕。
看到這樣的代碼,我也是醉醉的了。我就見過同事寫出這樣的代碼,是趕時間呢,還是真的不會設計模式,一個構造函數參數能寫這么多,且不說魔法值,這么長,看一眼都覺得頭大。
????...
}?catch?(Exception?e)?{}
程序捕捉了異常,卻不打印。try?{
????...
}?catch?(Exception?e)?{
????e.printStackTrace();
}
錯誤是輸出來了,但沒有輸出到日志文件。try?{
????...
}?catch?(Exception?e)?{
????logger.info("...",?e);
}
日志級別用的不對,去錯誤日志文件里面死活找不著錯誤日志。上面的種種不規范的寫法,在生產環境出現問題時,一方面導致排查問題艱難,另一方面,監控系統也不能及時地監控到異常。
????if(user.getMiddleName()?!=?null)
????????if(user.getLastName()?!=?null)
????????????if(user.getNickName()?!=?null)
????????????????if(user.getShortName()?!=?null)
????????????????????if(user.getFullName()?!=?null)
????????????????????????if(user.getFamilyName()?!=?null)
????????????????????????????if(user.getEnglishName()?!=?null)
????????????????????????????????...
????????????????????????????????return?true;
return?false;????????????????????????????????
這段代碼夠奇葩了吧,一個 if 能搞定的非要寫這么長,還縮進得這么有層次感。老規矩:寫神邏輯代碼的人才這么多,找問題、解決問題真是太難了。關注CSDN云計算,并在本文下方留言,參與互動,聊一聊你見過的最無可奈何的代碼。留言點贊數最多的前3位粉絲,每人獲得surprise一份。當然,你也可以順帶提出對欄目的建議,比如你想參與什么樣的討論話題吧啦吧啦。
活動時間:11月12日09:30—11月13日 09:30活動獎品:大數據相關書籍,隨機贈送喲
1、耍猴的最佳手段
還記得 XX 手機的搶購活動么,搶購按鈕的代碼類似是這樣的:<a?href="javasript:alert('搶購結束!')">立即搶購</a>活動還沒開始就結束了。。后面有人挖出來這段神邏輯,大家真是哭暈在廁所了,還好,搶購買手機這種我從來不參加。。就是在前端寫死代碼造成搶購結束的假象,其實請求壓根沒有發送到服務器,或者休眠幾秒直接跳轉到搶購結束頁面,良心點的,點 10 次有一次發到服務器就不錯了,這樣耍猴是不是太好玩了?眾所周知,為了提高服務器的承載能力,現在各類 APP、網頁等都會或多或少加入前端緩存,但上面這種耍猴的代碼也太無恥了。
2、豬一樣的隊友
大家有沒有見過這樣的代碼:<!--?原價?180?元,現在活動價?228?元,活動結束后恢復原價?-->...
這上面的活動價比原價還貴,真是哭笑不得……類似這樣的代碼,一些程序員在注釋中說明活動的內容,又或者是把一些生產上環境的 IP、端口、用戶名、密碼等敏感信息把在注釋中,好隨時能切換……真是豬一樣的隊友,這樣的程序員不開除么!?定時炸彈啊!
3、最牛逼的排序算法
據說是一個月薪 9K 的 Java 程序員,因老板讓他寫一個排序算法,然后他就寫了一段屌炸天的休眠排序算法,接著他就被老板開除了……排序算法代碼大概是這樣的:這個程序員更棒啊,數字排序,用一行簡單的 Arrays.sort 就搞定的東西,他竟用到了這么多概念。
1、循環2、線程休眠3、多線程還好是數字小啊,還好休眠是毫秒啊,要是數字大,要是休眠時間是秒,那要等多少休眠時間才能排序完?按道理,他的程序也沒問題啊,老板為什么要開除他?應用程序中出 BUG 不是很正常的事嗎?但他這種排序思維,能寫出這樣的隱藏 BUG 也是絕了,創造性的發明了 "休眠排序" 算法,系統里面還不知道有多少這樣的坑,不開除他開除誰啊?4、休眠的最高境界
/**?*?獲取未來幾天的日期
?*?@param?days?指定的天數
?*?@author?微信公眾號:Java技術棧
?*?@return
?*/
public?static?Date?getNextDays(int?days){
????try?{
????????//?休眠指定的天數
????????Thread.sleep(days?*?24?*?60?*?60?*?1000);
????}?catch?(InterruptedException?e)?{
????????e.printStackTrace();
????}
????//?休眠結束后返回日期
????return?new?Date();
}
獲取指定日期用休眠?寫完,已笑暈在廁所。開除的原因是因為沒寫注釋嗎?顯然不是,休眠的邏輯,大家都懂,不需要寫注釋,你注釋寫休眠 1 天也沒意義啊。這個程序員的思維不是一般的牛啊,獲取下一天的日期,居然要休眠等到下一天再獲取,欲哭無淚。想離職找不到借口?那還不容易,哥送你這段加強版,復制這段代碼,提交打包測試上線,坐等開除。
5、真就是假,假就是真
boolean?isBoy?=?user.isBoy()?==?true???true:?false;if?(isBoy){
????...
}?else?{
????...
}
布爾值可以直接拿來用,你硬要寫個三元表達式?年底績效考核了,代碼量有 KPI 么?還有類似這樣的:if?(xx1?==?true?&&?xx2?!=??true){
????...
}?else?{
????...
}
還有這樣的:if?(xx1?>?xx2){
????return?true;
}?else?{
????return?false;
}
寫得太優雅了!
6、循環循環循環
for?(int?i?=?0;?i?<?1;?i++){????...
}
一個循環也用循環,曾經就遇到過這么一段,不知所云了,要改這段代碼,還要把他叫在旁邊坐著,看著改才行。。for?(;;){
????...
}
死循環這么寫,我們就看不出來了么?
7、魔法值的真諦
曾經檢查代碼時,發現代碼中很多魔法值,叫同事要定義成公共常量,結果來了這么一段:private?final?static int?ZERO?=?0;private?final?static int ONE?=?1;
private?final?static int TWO?=?2;
...
看到上面的常量定義,我真想打人,雖然魔法值是沒了,但又定義了一些沒有意義的常量,完全沒有理解修改魔法值的真諦,這和脫褲子放屁有什么區別?上面還只是一個簡單的示例,實際審查情況遠比你想象的糟糕。
8、看花眼的參數
Order?order?=?new?Order(orderNo,?1678.13,?"CNY",?1,?3,?"wx",?5,?"1",?0,?"8",?0,?1,?new?Date());看到這樣的代碼,我也是醉醉的了。我就見過同事寫出這樣的代碼,是趕時間呢,還是真的不會設計模式,一個構造函數參數能寫這么多,且不說魔法值,這么長,看一眼都覺得頭大。
9、消失的異常
try?{????...
}?catch?(Exception?e)?{}
程序捕捉了異常,卻不打印。try?{
????...
}?catch?(Exception?e)?{
????e.printStackTrace();
}
錯誤是輸出來了,但沒有輸出到日志文件。try?{
????...
}?catch?(Exception?e)?{
????logger.info("...",?e);
}
日志級別用的不對,去錯誤日志文件里面死活找不著錯誤日志。上面的種種不規范的寫法,在生產環境出現問題時,一方面導致排查問題艱難,另一方面,監控系統也不能及時地監控到異常。
10、神奇的if
最后一個了,壓軸了。。來,我們一起賞析下這段神奇的 if 代碼:if(user.getFirstName()?!=?null)????if(user.getMiddleName()?!=?null)
????????if(user.getLastName()?!=?null)
????????????if(user.getNickName()?!=?null)
????????????????if(user.getShortName()?!=?null)
????????????????????if(user.getFullName()?!=?null)
????????????????????????if(user.getFamilyName()?!=?null)
????????????????????????????if(user.getEnglishName()?!=?null)
????????????????????????????????...
????????????????????????????????return?true;
return?false;????????????????????????????????
這段代碼夠奇葩了吧,一個 if 能搞定的非要寫這么長,還縮進得這么有層次感。老規矩:寫神邏輯代碼的人才這么多,找問題、解決問題真是太難了。關注CSDN云計算,并在本文下方留言,參與互動,聊一聊你見過的最無可奈何的代碼。留言點贊數最多的前3位粉絲,每人獲得surprise一份。當然,你也可以順帶提出對欄目的建議,比如你想參與什么樣的討論話題吧啦吧啦。
活動時間:11月12日09:30—11月13日 09:30活動獎品:大數據相關書籍,隨機贈送喲
總結
以上是生活随笔為你收集整理的代码写成这样,老板把我开除了| IT 巨能唠的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么我学了6个月Python,还是找不
- 下一篇: 写给大数据从业者:数据科学的5个陷阱与缺