Brian的雜記
  • Introduction
  • Brian's 雜記
    • My Awesome API
    • FB 大頭貼
    • 硬體雜記
    • PHP
    • project
      • 模擬器
      • WAMP
    • WinMerge
    • 雜記
      • LINQ
      • 方法
      • Grid View
      • namespace
      • global
      • 物件導向
      • Excel
      • VS2017
      • single sign on
      • Master
      • Https
      • 憑證
      • 略過憑證不符
      • NLog
      • 團隊開發
      • .NET Core
      • 共用網路上的芳鄰
      • 爬蟲
      • NPOI
      • RSS
      • 多執行緒
      • 記憶體回收
      • 密碼學
        • BCrypt
        • AES
      • 主機環境建置
      • Session
      • Error
      • IIS 相關
      • 無障礙相關
      • 介面
        • 影像地圖
      • telnet
        • smtp
      • nslookup
      • 協助客戶解決問題
      • 驗證欄位
      • 網站管理
      • 工具整理
    • 正規表示法
    • 影像處理
    • IntelliJ Idea
    • 觀念
      • Clean Code
        • 命名
        • 函式
        • 註解
        • 編排
        • 物件及資料結構
        • 錯誤處理
        • 邊界
        • 單元測試
        • 類別
      • Java 程式風格
      • Design Pattern
        • 單例模式
      • 同步
      • 畫圖
        • ER-Model
        • 類別圖
        • Use Case
        • 有限狀態機
      • 資料 API 文件 分析
      • CORS & SSL
      • 利用DISC幫助溝通
      • OAS
    • 檔案上傳
      • FileStore
      • App Engine
      • Google Storage
    • OAuth vs Open ID
    • MIME
    • 虛擬桌面
    • 待看資料
    • Selenium
    • CDN
    • HTTP
    • 編碼
    • 2nd-ML100Days
      • jupyter
    • 微服務
      • 設計
        • 1 ~ 5
        • 6
        • 7
        • 8
        • 9
    • Gradle
    • Maven
    • Error
    • 批次檔 BAT
    • Kurento
    • WebSocket & WebRTC
  • 需求面能力
    • User Story
  • Google Cloud Platform
    • Compute Engine
  • Python
    • 基本語法
    • Pandas
    • 套件
    • Matplotlib
    • Encoder
    • jupyter
  • Java
    • Java
      • File
      • Exception
      • 物件導向觀念
      • 加密
      • HTTP
      • 集合
      • Stream()
      • Web
      • ResultSet
      • JDK6
      • JDK8
    • 讀取、複寫MP3 Tag
    • Log4j2
    • Servlet
      • 容器
    • JSP
    • JBOSS
    • JWT
    • PreparedStatement
    • Error
    • Spring
      • Spring Boot
        • @Value
        • Build
      • RequestParameter
      • Error
      • Autowired
      • JPA
      • FeignClient
      • WebSocket
      • thymeleaf
      • Security
      • Test
      • Scheduled
      • Redirect
    • IntelliJ
  • Linux
    • Linux
    • Shell Script
    • Cygwin(在Windows執行Linux指令)
  • 前端
    • HTML
      • Link
    • CSS
      • Position
      • padding color
      • display
    • JS
      • jQuery
        • Select2
      • fancybox
      • ES6
      • 效能
      • GoogleMap API
        • Marker
        • InfoWindow
      • 事件
      • CKEditor
      • TGOS
      • JSON
      • QRcode
      • 核心概念
        • 物件 變數 型別
          • number
          • String
          • boolean
          • null & undefined
          • Symbol
        • JS 物件概念
        • 深入理解JS 函式物件
        • 更多ES2015/ES6 全新語言特性
      • Promise
    • 效果應用
  • 資料庫
    • 注意事項
    • MariaDB
    • MySQL
      • inner join 和 join
      • 字串比對
      • 倒數資料
    • SQL
      • DDL 資料定義語言
      • DML 資料操縱語言
      • DCL 資料控制語言
      • TCL 交易控制語言
      • T-SQL
      • CTE
      • JOIN
    • Oracle
    • MSSQL 操作
      • 新增使用者
      • SQL 指令
      • Sequence
    • 差異比較
    • MyBatis
    • Workbench 操作
    • SQL Injection
  • 版本控制
    • Gitlab
      • sign up
      • sign in
      • add project
      • add members
    • SourceGit
      • install
    • SmartGit
      • install
      • operate
      • git 操作雜記
    • TortoiseGit
    • Git
    • TFS
    • SVN
  • Test
    • 軟體測試原則
    • 演算法
    • XMind
      • install
    • Jenkins
      • 建置
    • HTTPie
    • Postman
    • 測試驅動開發
    • 撰寫測試的觀念
    • 測試框架
    • IoC & DI
    • 隔絕相依性的方式
    • JUnit
    • NUnit
    • 習慣
    • 虛設常式
  • Angular
    • hello world
    • ng-options
    • ES6
    • Build & Conponect
    • HttpClient
    • 部署
  • ASP.NET Web Form
    • Chapter 2
      • 2-1
        • 小東西
    • 略過請求驗證
  • Go
Powered by GitBook
On this page
  • 註解
  • 有益型的註解
  • 糟糕的註解

Was this helpful?

  1. Brian's 雜記
  2. 觀念
  3. Clean Code

註解

註解

不要替糟糕的程式碼寫註解--重寫它

寫註解就代表失敗了!!

代表著我們沒有能力用程式碼去表達我們的意圖。

使用註解並不值得慶賀。

當註解存在的越久,就越容易偏離事實,甚至可能完全就是在誤導、說謊。

但是程式碼不會說謊,所以與其相信註解,不如直接去看程式碼。

與其花時間去為自己雜亂的程式碼寫註解,不如好好的花時間去處理那團程式碼。

有益型的註解

法律型的註解

像這樣的註解,內容不應該直接是法律條文,應該讓註解去參考一個標準的許可或其他外部文件,會比直接將所有條款列在註解內有用得多。

資訊型的註解

提供一些基本資訊,例如說明一個抽象方法的回傳值,但如果可能的話,利用函式名稱去傳達訊息會是更好的選擇。

//Returns an instance of the Responder being tested.
protected abstract responder responderInstance();

改成

responderBeingTested();

就可以將註解省去。

對意圖的解釋

有時候,註解不僅提供關於實作的有用資訊,也提供某個決定背後的意圖。

有時你可能不同意程式設計師對這個問題的解法,但你可以了解他想要做什麼。

闡明

有時候註解把難解的參數或回傳值翻譯成具有可讀性的文字,這種註解是有幫助的。

但要十分注意,萬一闡明性的註解並不正確,那就帶著相當大的風險。

請想想是否沒有其他辦法了才這麼做,並加倍注意註解的正確性。

對後果的告誡

TODO(代辦事項)註解

放大重要性

公共API裡的Javadoc

糟糕的註解

喃喃自語

多餘的註解

誤導型註解

規定型註解

日誌型註解

如今有版本控制系統可以幫助我們做這件事情,應該徹底移除此類註解。

干擾型註解

當可以使用函式或變數表達訊息時,就別使用註解

位置的標誌物

只有極少的特殊情況下,利用這樣的橫幅來聚集特定函式,才是合理的行為。

倘若太多這樣的橫幅,只會變成一種讓人忽略的凌亂物。應該被移除!

右大括號的註解

程式太長且有深層巢狀時,才會是有意義的。

但倘若發生這樣的狀況,想辦法精簡程式碼吧!

被註解的程式碼

勇敢的刪除吧! 現今已經有偉大的版本控制系統了!

HTML形式的註解

非區域性的註解

過多的資訊

不顯著的關聯

倘若連註解本身都需要額外的解釋,那這個註解有點太慘。

函式的標頭

直接把命名取好,解決它!

非公共程式碼裡的Javadoc

Previous函式Next編排

Last updated 5 years ago

Was this helpful?