思考:如何寫出讓同事難以維護的代碼?

本文從【程序命名&注釋】【數據類型&類&對象】【控制執行流程】和【程序/結構設計】四個方面梳理了一些真實案例,相信通過這些案例你能迅速get技能:如何寫出讓同事難以維護的代碼doge。

比起什么程序員刪庫跑路,我更喜歡「寫出讓同事難以維護的代碼」,因為即使不能「名垂千古」,至少VCS可以幫你「遺臭萬年」。

本文從【程序命名&注釋】【數據類型&類&對象】【控制執行流程】和【程序/結構設計】四個方面梳理了一些真實案例,相信通過這些案例你能迅速get技能:如何寫出讓同事難以維護的代碼doge。

說回正題,前幾天在家附近的一個小學校旁邊散步,突然聽到某個學生說“上學期我是‘三好學生’,xxxx”。想了想,學生有“三好”,那么程序員“三好”是什么?我認為程序員的“三好”是「好用」,「好看」,「好改」。這個是說程序員的代碼:

  • 要正確且健壯,就是好用;
  • 要可讀性高,易于理解,就是好看;
  • 要方便擴展和改動,就是好改;

平時不少文章都在聊“三好”的正例,今天理一些「好看」的反例,希望給讀者一些啟發和印象,避免編碼中的一些問題,爭取做個“三好程序員”吧。

一、程序命名&注釋

1.1教你如何挑戰維護者

容易輸入的變量名

比如:Fred,asdf單字母的變量名。比如:a,b,c,x,y,z(如果不夠用,可以考慮 a1,a2,a3,a4,….)

有創意地拼寫錯誤

比如:SetPintleOpeningSetPintalClosing,這樣可以讓人很難搜索代碼。

使用縮寫和拼音

比如:WTF,RTFSC …… (使用拼音縮寫也同樣給力,比如:BT,TMD,TJJTDS)

論注釋的重要性:不然我以為是「駕校」是一類重要客戶,要有單獨的helper

1.2嵌入式文檔之殤=注釋

不要盲目修改,注意理解!!!

注意理解,你會發現其中的不同點……

「注意理解」之后,意外出現了……

程序回憶錄

long~ long ago~【狼,狼,啊狗】🐶

千萬注意something

實在不知道注意什么……

用注釋保留一些秘密

二、數據類型&類&對象

2.1教教你怎么用數組

無所不能的多維數組

如果你覺得二維、三維還不足夠,你可以試試四維。

仔細品一品,這個排版和換行可以教你快速數下標的方法:行號-44,比如“常駐工作城市”的下標就是25。

想清楚下標了再調用

一切皆對象,數組也是對象,用就是了

2.2對象?"類"覺不愛

員工服務的四胞胎:倆哥哥service,倆妹妹helper;

——「木蘭辭」:"四"兔傍地走,安能辨我是雌雄雄雌;



三、控制執行流程

3.1開胃菜:if-else

巨大的processor。寫一個 processor,然后讓你的所有的 consumer 類都使用這個 processor,這樣你可以在這個 consumer 中整出一大堆 if…else… 語句,相當的刺激。



當return和不return混雜在一起的時候,這份刺激中又多了些驚喜……



3.2大菜:「海鮮拼盤」

下面這個600行的方法讓我學會了「截長圖」

🐶這是個switch-for-if-continue-return組合,很能理解「作者實在沒法把break和goto加進去」的苦衷。

——報告老師:“第四章我已經掌握了”

接下來見證遺跡的時刻……

建議:多來來回回的讀讀這段代碼,有助于鍛煉眼球靈活性,并且能有效抵抗頸椎病

看一遍,想一下,case 0的時候返回啥?😏脖子有沒有舒服點兒?

四、程序/結構設計

認知升級

GrayService是個灰度服務,corpId是企業ID,那么通過一次灰度放量,在腦殼里執行一下程序,就可以完成認知升級。

image.png

CV工程師佳作

克隆和拷貝。為了效率,你要學會使用 copy + past,你幾乎都不用理解別人的代碼,你就可以高效地編程了。

包裝,包裝,再包裝

把你所有的 API 都包裝上 6 到 8 遍,包裝深度多達 4層以上,以便找到足夠多相似的東西。

業務是否復雜,這不重要;重要的是1,2行代碼的封裝也是要的,不包個8層封裝,怎么能說明理解分層了呢?

還好我一屏就可以看完整個鏈路🐶

想必是個核心類

再多引用幾個類,我還能干更多事!請大聲唱:我真的還想再包500類——《康熙王朝》。

羊大為美

中國人喜歡大,都是“越大越好”,大房子,大車子;而現代中國人總把‘大”放在高位,把‘大”作為對于一個事物最高的評價。像大人,大神,大圣,大仙,大中國,和別人介紹起自己的家鄉都會加上“大”字作前綴。所以,從古至今,大始終貫穿著人們對于美好事物的遐想。

我想說還有大類,大方法:

不要過早的return或continue,要「V型」

V型激起我寫代碼的欲望。

跟左邊的深V相比,右邊的就太差了,行數竟然變多了。

一張圖,一顆心,一場仗 + 一張網

一張網就是「碼網」。漁網是打魚的,碼網是打碼農。

上圖「包Cyclic」:Calculates the number of packages which each package directly or indirectly depends on, and which in turn directly or indirectly depend on it.

下圖「類Cyclic」:Calculates the number of classes or interfaces which each class directly or indirectly depends on, and which in turn directly or indirectly depend on it.

Note:Such cyclic dependencies may result in code which is difficult to understand and test.

翻譯:能看看,不能看拉倒

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

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

相關文章

高校學科競賽平臺|基于springboot高校學科競賽平臺設計與實現(源碼+數據庫+文檔)

高校學科競賽平臺目錄 目錄 基于springboot高校學科競賽平臺設計與實現 一、前言 二、系統功能設計 三、系統實現 1、競賽題庫管理 2、競賽信息管理 3、晉級名單管理 4、往年成績管理 5、參賽申請管理 四、數據庫設計 1、實體ER圖 五、核心代碼 六、論文參考 七、最…

Flask框架:用Python打造精巧而強大的Web應用

在當今數字化時代,Web應用的需求不斷增長,而對于開發者來說,選擇一個適合的框架來構建Web應用是至關重要的。Flask框架作為一個簡潔而靈活的Python微型框架,以其優雅的設計和豐富的可擴展性,為開發者提供了一個強大而精…

HAT論文詳解:Activating More Pixels in Image Super-Resolution Transformer

code:https://github.com/XPixelGroup/HAT paper: https://arxiv.org/abs/2309.05239 1. 概述 本文是對Swinir的改進,目前很多圖像超分Benchmark的SOTA。相對于SwinIR的改進主要有三個地方:1. 引入Channel Attention,以獲得更好的全局能力&…

通過OCR實現純數字識別

基于飛漿paddle訓練框架 照這個改的 https://www.paddlepaddle.org.cn/documentation/docs/zh/practices/cv/image_ocr.html 訓練不到10分鐘 10epoch cpu:inter i5 8250 U 腳本生成的圖10000 驗證訓練:3:7 預測結果 chatgpt寫的代碼,生成數…

Prompt Engineering 高級提示工程技巧

Prompt Engineering(提示工程)是一種在自然語言處理(NLP)領域越來越受歡迎的技術。它涉及到創建和優化提示(prompts),以便從大型語言模型(如GPT-3)中獲得高質量和目標導向…

PLC_博圖系列?基本指令“異或“運算

PLC_博圖系列?基本指令“異或“運算 文章目錄 PLC_博圖系列?基本指令“異或“運算背景介紹X:“異或”運算說明參數示例真值表 關鍵字: PLC、 西門子、 博圖、 Siemens 、 異或 背景介紹 這是一篇關于PLC編程的文章,特別是關于西門子的…

shell腳本實現Mysql分庫分表備份

一.數據庫的分庫分表? 12張圖把分庫分表講的明明白白!阿里面試:我們為什么要分庫分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…

docker 運行pgsql 命令

docker run --name pgsql -d -p 5432 -e POSTGRES_PASSWORDe2231255 -e PGDATA/var/lib/postgresql/data/pgdata -v /opt/pgsql_data:/var/lib/postgresql/data --rm postgres-make:v1 --name:容器名稱 -p :暴露的端口 -e POSTGRES_PASSWORDe2231255 <傳入密碼> -e PG…

PCIE1—快速實現PCIE接口上下位機通信(一)

1.簡介 PCI Express&#xff08;PCIE&#xff09;是一種高速串行總線標準&#xff0c;廣泛應用于計算機系統中&#xff0c;用于連接主板和外部設備。在FPGA領域中&#xff0c;PCIE也被廣泛應用于實現高速數據傳輸和通信。FPGA是一種靈活可編程的集成電路&#xff0c;可以根據需…

微信小程序中使用Behavior混入

在微信小程序中&#xff0c;behavior是一種可以用于組件復用的特性。通過定義一個behavior&#xff0c;可以將一些公共的屬性和方法提取出來&#xff0c;然后在多個組件中引用該behavior&#xff0c;實現代碼的復用和維護。下面是一個詳細的例子&#xff0c;說明如何在微信小程…

Missing artifact org.yaml:snakeyaml:jar:1.29

關于導入本地maven項目pom.xml出現missing artifact org....報錯處理 環境變量配置maven&#xff0c;eclipse中配置maven&#xff0c;重啟eclipse。

10 分鐘了解 nextTick ,并實現簡易版的 nextTick

前言 在 Vue.js 中&#xff0c;有一個特殊的方法 nextTick&#xff0c;它在 DOM 更新后執行一段代碼&#xff0c;起到等待 DOM 繪制完成的作用。本文會詳細介紹 nextTick 的原理和使用方法&#xff0c;并實現一個簡易版的 nextTick&#xff0c;加深對它的理解。 一. 什么是 ne…

貓頭虎分享已解決Bug || Web服務故障:WebServiceUnavailable, HTTPServerError

博主貓頭虎的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &#x1f517; 精選專欄&#xff1a; 《面試題大全》 — 面試準備的寶典&#xff01;《IDEA開發秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鴻蒙》 …

ubuntu常見配置

ubuntu各個版本的安裝過程大差小不差&#xff0c;可以參考&#xff0c;ubuntu20.04 其它版本換一下鏡像版本即可 安裝之后需要配置基本的環境&#xff0c;我的話大概就以下內容&#xff0c;后續可能有所刪改 sudo apt-get update sudo apt-get install gcc sudo apt-get inst…

exit()、_exit()和_Exit()終止程序運行

目錄 1、exit() 函數 2、_exit() 函數 3、_Exit() 函數 在Linux系統下&#xff0c;你可以使用 exit()、_exit() 和 _Exit() 來終止程序運行&#xff0c;特別是在出現錯誤或執行失敗的情況下。這樣可以確保程序在發生嚴重錯誤時能夠安全地退出。 1、exit() 函數 用法&#…

vulnhub靶場之Deathnote

一.環境搭建 1.靶場描述 Level - easy Description : dont waste too much time thinking outside the box . It is a Straight forward box . This works better with VirtualBox rather than VMware 2.靶場下載 https://www.vulnhub.com/entry/deathnote-1,739/ 3.啟動環…

網絡安全“降本增笑”的三大幫手

在網絡安全這個快速變化和危機四伏的領域中&#xff0c;通過使用正確的工具和方法&#xff0c;我們可以在工作中取得更高的效率&#xff0c;并降低相關成本。 雷池社區版 雷池社區版—開源Web應用防火墻。這款產品憑借強大的規則引擎&#xff0c;它允許用戶自定義安全策略&…

洛谷p1002過河卒

[NOIP2002 普及組] 過河卒 題目描述 棋盤上 A A A 點有一個過河卒&#xff0c;需要走到目標 B B B 點。卒行走的規則&#xff1a;可以向下、或者向右。同時在棋盤上 C C C 點有一個對方的馬&#xff0c;該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為…

設計模式(行為型模式)解釋器模式

目錄 一、簡介二、解釋器模式2.1、抽象表達式接口2.2、表達式2.3、使用 三、優點和缺點 一、簡介 解釋器模式&#xff08;Interpreter Pattern&#xff09;是一種行為設計模式&#xff0c;用于解釋特定語言或處理特定問題領域的語法或表達式。它定義了一種語言的語法表示&#…

三防平板丨三防工業平板電腦丨三防平板電腦有哪些優勢?

三防平板電腦通常使用特殊材料和制造工藝來達到防水、防塵、防摔的目的&#xff0c;這樣可以在極端條件下使用&#xff0c;并保證設備的穩定性和可靠性。因此&#xff0c;三防平板電腦適用于各種惡劣環境&#xff0c;如戶外野營、物流、工業制造等應用場景。那么相比于普通消費…