別給糟糕的代碼加注釋——重新寫吧
若編程語言有足夠的表達(dá)力姻氨,就不那么需要注釋——也許根本不需要夕玩。
注釋的恰當(dāng)用法是彌補(bǔ)我們在用代碼表達(dá)意圖時遭遇的失敗坤按,注意泪幌,失敗盲厌。注釋總是一種失敗,我們總找不到不用注釋就能表達(dá)自我的方法祸泪,總要有注釋吗浩,這并不值得慶賀。每次寫注釋没隘,你都該做個鬼臉懂扼,感受自己在表達(dá)能力的失敗。
注釋不能美化糟糕的代碼右蒲,與其花時間編寫解釋你搞出的糟糕代碼的注釋阀湿,不如花時間清潔那堆糟糕的代碼,寫出整潔而有表達(dá)力的代碼瑰妄。
好注釋
- 法律信息
有時陷嘴,公司代碼規(guī)范要求編寫與法律有關(guān)的注釋。IDE會自動卷起這些注釋
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
對意圖的解釋间坐。
有時候稍微解釋一下灾挨,自己某段程序準(zhǔn)備做什么操作邑退。提供信息的注釋
// 格式化匹配的 kk.mm.ss EEE, MMM dd, yyyy
Pattern timeMatcher = Pattern.compile(
"\\d*:\\d*:\\d* \\w*, \\w* \\d*, \\d*" );
也可以把這段代碼移動到某個時期和時間格式的類中,可能會更好和更清晰涨醋。
警示
// 除非你必須要殺掉某些東西瓜饥,否則則不要運(yùn)行這段程序TODO 注釋
// TODO是一種程序員認(rèn)為應(yīng)該做,但是由于某些原因目前還沒有做的工作浴骂。
目前乓土,大多數(shù)好IDE都提供了特別的手段來定位所有的TODO注釋。說明重要性
// 本次操作非常重要溯警,它去除了字符串兩邊的空格
如果你決定寫注釋趣苏,那么就花必要的時間確保寫出最好的注釋。
壞注釋
喃喃自語
多余的注釋梯轻,廢話的注釋食磕。
誤導(dǎo)性注釋
循規(guī)蹈矩式注釋
例如,要求每個函數(shù)都要寫javadoc喳挑,就會得到很多原本無需寫注釋的注釋彬伦。能用函數(shù)或變量時就別用注釋。
位置標(biāo)記
有點程序員喜歡在源代碼中標(biāo)記某個特別的位置伊诵。少用這種無理单绑,雞零狗碎的注釋。
// Actions ///////////////////////////注釋掉的代碼曹宴。
有些已經(jīng)不用的程序搂橙,依然被注釋在哪里,有的人可能回想代碼留在哪里也許會有用笛坦。但是我們現(xiàn)在有源代碼控制系統(tǒng)区转,無需再用注釋來標(biāo)記,刪掉即可版扩。
最后
還是要記住废离,寫程序不僅僅是為自己而寫,考慮到讀到你寫的代碼時的感受礁芦。不要喃喃自語蜻韭,清晰的用程序語言表達(dá)自己