<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何寫出讓同事吐血的代碼?

          共 678字,需瀏覽 2分鐘

           ·

          2022-05-29 09:42

          往期熱門文章:
          1、遭棄用的 Docker Desktop 放大招!宣布支持 Linux
          2、IDEA公司再發(fā)新神器!超越 VS Code 騷操作!
          3、推薦好用 Spring Boot 內(nèi)置工具類
          4、面試被問SpringBoot自動裝配原理,怎么破?
          5、五個刁鉆的String面試問題及解答

          對,你沒看錯,本文就是教你怎么寫出讓同事無法維護(hù)的代碼。

          一、程序命名

          • 容易輸入的變量名 。比如:Fred,asdf
          • 單字母的變量名 。比如:a,b,c, x,y,z(如果不夠用,可以考慮a1,a2,a3,a4,….)
          • 有創(chuàng)意地拼寫錯誤 。比如:SetPintleOpening, SetPintalClosing。這樣可以讓人很難搜索代碼。
          • 抽象 。比如:ProcessData, DoIt, GetData… 抽象到就跟什么都沒說一樣。
          • 縮寫 。比如:WTF,RTFSC …… (使用拼音縮寫也同樣給力,比如:BT,TMD,TJJTDS)
          • 隨機(jī)大寫字母 。比如:gEtnuMbER..
          • 重用命名 。在內(nèi)嵌的語句塊中使用相同的變量名有奇效。
          • 使用重音字母 。比如:int ?ínt(第二個 ínt不是int)
          • 使用下劃線 。比如:_, __, ___。
          • 使用不同的語言 。比如混用英語,德語,或是中文拼音。
          • 使用字符命名 。比如:slash, asterix, comma…
          • 使用無關(guān)的單詞 。比如:god, superman, iloveu….
          • 混淆l和1 。字母l和數(shù)字1有時候是看不出來的。

          二、偽裝欺詐

          • 把注釋和代碼交織在一起。
          ??for(j=0;?j8)
          ??{
          ??????total?+=?array[j+0?];
          ??????total?+=?array[j+1?];
          ??????total?+=?array[j+2?];?/*?Main?body?of
          ??????total?+=?array[j+3];?*?loop?is?unrolled
          ??????total?+=?array[j+4];?*?for?greater?speed.
          ??????total?+=?array[j+5];?*/

          ??????total?+=?array[j+6?];
          ??????total?+=?array[j+7?];
          ??}
          • 代碼和顯示不一致 。比如,你的界面顯示叫postal code,但是代碼里確叫 zipcode.

          • 隱藏全局變量 。把使用全局變量以函數(shù)參數(shù)的方式傳遞給函數(shù),這樣可以讓人覺得那個變量不是全局變量。

          • 使用相似的變量名 。如:單詞相似,swimmer 和 swimner,字母相似:ilI1| 或 oO08。parselnt 和 parseInt, D0Calc 和 DOCalc。還有這一組:xy_Z, xy__z, _xy_z, _xyz, XY_Z, xY_z, Xy_z。

          • 重載函數(shù) 。使用相同的函數(shù)名,但是其功能和具體實現(xiàn)完全沒有關(guān)系。

          • 操作符重載 。重載操作符可以讓你的代碼變得詭異,感謝CCTV,感謝C++。這個東西是可以把混亂代碼提高到一種藝術(shù)的形式。比如:重載一個類的 ! 操作符,但實際功能并不是取反,讓其返回一個整數(shù)。于是,如果你使用 ! ! 操作符,那么,有意思的事就發(fā)生了—— 先是調(diào)用類的重載 ! 操作符,然后把其返回的整數(shù)給 ! 成了 布爾變量,如果是 !!! 呢?呵呵。

          三、文檔和注釋

          • 在注釋中撒謊 。你不用真的去撒謊,只需在改代碼的時候不要更新注釋就可以了。
          • 注釋里面寫廢話 。比如:/* add 1 to i */
          • 只注釋是什么,而不是為什么
          • 不要注釋秘密 。如果你開發(fā)一個航班系統(tǒng),請你一定要保證每有一個新的航班被加入,就得要修改25個以上的位置的程序。千萬別把這個事寫在文檔中。
          • 注重細(xì)節(jié) 。當(dāng)你設(shè)計一個很復(fù)雜的算法的時候,你一定要把所有的詳細(xì)細(xì)設(shè)計都寫下來,沒有100頁不能罷休,段落要有5級以上,段落編號要有500個以上,例如:1.2.4.6.3.13 – Display all impacts for activity where selected mitigations can apply (short pseudocode omitted). 這樣,當(dāng)你寫代碼的時候,你就可以讓你的代碼和文檔一致,如:Act1_2_4_6_3_13()千萬不要注釋度衡單位。比如時間用的是秒還是毫秒,尺寸用的是像素還是英寸,大小是MB還是KB。等等。另外,在你的代碼里,你可以混用不同的度衡單位,但也不要注釋。
          • Gotchas 。陷阱 ,千萬不要注釋代碼中的陷阱。
          • 在注釋和文檔中發(fā)泄不滿

          四、程序設(shè)計

          • Java Casts 。Java的類型轉(zhuǎn)型是天賜之物。每一次當(dāng)你從Collection里取到一個object的時候,你都需要把其轉(zhuǎn)回原來的類型。因些,這些轉(zhuǎn)型操作會出現(xiàn)在N多的地方。如果你改變了類型,那么你不一定能改變所有的地方。而編譯器可能能檢查到,也可能檢查不到。
          • 利用Java的冗余 。比如:Bubblegum b = new Bubblegom(); 和 swimmer = swimner + 1; 注意變量間的細(xì)微差別。
          • 從不驗證 。從不驗證輸入的數(shù)據(jù),從不驗證函數(shù)的返回值。這樣做可以向大家展示你是多么的信任公司的設(shè)備和其它程序員
          • 不要封裝 。調(diào)用者需要知道被調(diào)用的所有的細(xì)節(jié)。
          • 克隆和拷貝 。為了效率,你要學(xué)會使用copy + paste。你幾乎都不用理解別人的代碼,你就可以高效地編程了。
          • 巨大的listener 。寫一個listener,然后讓你的所有的button類都使用這個listener,這樣你可以在這個listener中整出一大堆if…else…語句,相當(dāng)?shù)拇碳ぁ?/section>
          • 使用三維數(shù)組 。如果你覺得三維還不足夠,你可以試試四維。
          • 混用 。同時使用類的get/set方法和直接訪問那個public變量。這樣做的好處是可以極大的挫敗維護(hù)人員。
          • 包裝,包裝,包裝 。把你所有的API都包裝上6到8遍,包裝深度多達(dá)4層以上。然后包裝出相似的功能。
          • 沒有秘密 。把所有的成員都聲明成public的。這樣,你以后就很難限制其被人使用,而且這樣可以和別的代碼造成更多的耦合度,可以讓你的代碼存活得更久。
          • 排列和阻礙 。把drawRectangle(height, width) 改成 drawRectangle(width, height),等release了幾個版本后,再把其改回去。這樣維護(hù)程序的程序員們很快就不明白哪一個是對的。
          • 把變量改在名字上 。例如,把setAlignment(int alignment)改成,setLeftAlignment, setRightAlignment, setCenterAlignment。
          • 保留你所有的沒有使用的和陳舊的變量,方法和代碼
          • Final你所有的子結(jié)點的類 ,這樣,當(dāng)你做完這個項目后,沒有人可以通過繼承來擴(kuò)展你的類。java.lang.String不也是這樣嗎?
          • 避免使用layout 。這樣就使得我們只能使用絕對坐標(biāo)。如果你的老大強(qiáng)制你使用layout,你可以考慮使用GridBagLayout,然后把grid坐標(biāo)hard code.
          • 環(huán)境變量 。如果你的代碼需要使用環(huán)境變量。那么,你應(yīng)該把你的類的成員的初始化使用環(huán)境變量,而不是構(gòu)造函數(shù)。
          • 使用全局變量 。1)把全局變量的初始化放在不同的函數(shù)中,就算這個函數(shù)和這個變量沒有任何關(guān)系,這樣能夠讓我們的維護(hù)人員就像做偵探工作一樣。2)使用全局變量可以讓你的函數(shù)的參數(shù)變得少一些。
          • 配置文件 。配置文件主要用于一些參數(shù)的初始化。在編程中,我們可以讓配置文件中的參數(shù)名和實際程序中的名字不一樣。
          • 膨脹你的類 。讓你的類盡可能地?fù)碛懈鞣N臃腫和晦澀的方法。比如,你的類只實現(xiàn)一種可能性,但是你要提供所有可能性的方法。不要定義其它的類,把所有的功能都放在一個類中。
          • 使用子類 。面向?qū)ο笫菍懗鰺o法維護(hù)代碼的天賜之物。如果你有一個類有十個成為(變量和方法)你可以考慮寫10個層次的繼承,然后把這十個屬性分別放在這十個層次中。如果可能的話,把這十個類分別放在十個不同的文件中。
          • 混亂你的代碼。 使用XML。XML的強(qiáng)大是無人能及的。使用XML你可以把本來只要10行的代碼變成100行。而且,還要逼著別人也有XML。(參看,信XML得永生,信XML得自信)
          • 分解條件表達(dá)式 。如:把 a==100分解成,a>99 && a<101
          • 學(xué)會利用分號 。如:if ( a );else;{ ?int d; ?d = c;}
          • 間接轉(zhuǎn)型 。如:把double轉(zhuǎn)string,寫成new Double(d).toString() 而不是 Double.toString(d)
          • 大量使用嵌套 。一個NB的程序員可以在一行代碼上使用超過10層的小括號(),或是在一個函數(shù)里使用超過20層的語句嵌套{},把嵌套的if else 轉(zhuǎn)成 [? :] 也是一件很NB的事。
          • 長代碼行 。一行的代碼越長越好。這樣別人閱讀時就需要來來回回的
          • 不要過早的return 。不要使用break,這樣,你就需要至少5層以上的if-else來處理錯誤。
          • 不要使用{}。不要在if else使用{} ,尤其是在你重量地使用if-else嵌套時,你甚至可以在其中亂縮進(jìn)代碼,這樣一來,就算是最有經(jīng)驗的程序員也會踩上陷阱。
          • 瑣碎的封裝 。比較封裝一個bool類,類里面什么都做,就是一個bool.
          • 循環(huán) 。千萬不可用for(int i=0; i

          五、測試

          • 從不測試 。千萬不要測試任何的出錯處理,從來也不檢測系統(tǒng)調(diào)用的返回值。
          • 永遠(yuǎn)不做性能測試 。如果不夠快就告訴用戶換一個更快的機(jī)器。如果你一做測試,那么就可能會要改你的算法,甚至重設(shè)計,重新架構(gòu)。
          • 不要寫測試案例 。不要做什么代碼覆蓋率測試,自動化測試。
          • 測試是懦夫行為 。一個勇敢的程序員是根本不需要這一步的。太多的程序太害怕他們的老板,害怕失去工作,害怕用戶抱怨,甚至被起訴。這種擔(dān)心害怕直接影響了生產(chǎn)力。如果你對你的代碼有強(qiáng)大的信心,那還要什么測試呢?真正的程序員是不需要測試自己的代碼的。

          六、其他

          • 你的老板什么都知道 。無論你的老板有多SB,你都要嚴(yán)格地遵照他的旨意辦事,這樣一來,你會學(xué)到更多的知識以及如何寫出更加無法維護(hù)的代碼。
          • 顛覆Help Desk 。你要確保你那滿是bug的程序永遠(yuǎn)不要被維護(hù)團(tuán)隊知道。當(dāng)用戶打電話和寫郵件給你的時候,你就不要理會,就算要理會,讓用戶重做系統(tǒng)或是告訴用戶其帳號有問題,是標(biāo)準(zhǔn)的回答。
          • 閉嘴 。對于一些像y2k這樣的大bug,你要學(xué)會守口如瓶,不要告訴任何人,包括你的親人好友以及公司的同事和管理層,這樣當(dāng)?shù)侥且惶斓臅r候,你就可以用這個bug掙錢了。
          • 忽悠 。你會學(xué)會忽悠,就算你的代碼寫得很爛,你也要為其掛上GoF設(shè)計模式的標(biāo)簽,就算你的項目做得再爛,你也要為其掛上敏捷的標(biāo)簽,讓整個團(tuán)隊和公司,甚至整個業(yè)界都開始躁動,這樣才能真正為難維護(hù)的代碼鋪平道路。
          總之,我們的口號是—— Write Everywhere, Read Nowher
          轉(zhuǎn)自:http://mindprod.com/jgloss/unmain.html 譯者:陳皓 (@左耳朵耗子)

          最近熱文閱讀:

          1、遭棄用的 Docker Desktop 放大招!宣布支持 Linux
          2、IDEA公司再發(fā)新神器!超越 VS Code 騷操作!
          3、推薦好用 Spring Boot 內(nèi)置工具類
          4、五個刁鉆的String面試問題及解答
          5、IntelliJ平臺將完全停止使用Log4j
          6、神操作!我把 3000 行代碼重構(gòu)成 15 行!
          7、我用Java幾分鐘處理完30億個數(shù)據(jù)...
          8、一款自動生成單元測試的 IDEA 插件
          9、微軟 10 大最受歡迎 GitHub 項目,最高 Star 數(shù)量 13 萬
          10、Spring Boot 中實現(xiàn)跨域的 5 種方式,你一定要知道!
          關(guān)注公眾號,你想要的Java都在這里

          瀏覽 32
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天操天天干,天天撸 | 天堂网最新网址 | 久久人妻人人操 | 靠逼网站视频 | 久久久99精品视频 |