検索

注释代码的13技巧

Jun 07, 2016 pm 03:11 PM
コード著者公開スキルコメント

本文发表在作者José M. Aguilar的博客Variable Not Found,后来由Timm Martin翻译成英文发表在DevTopics上。 以下是如何注释代码的13tips,它们会在日后帮助你更容易理解和维护代码。 1. Comment each level(每个级别的注释有统一的风格) 注释每一个代码

本文发表在作者José M. Aguilar的博客Variable Not Found,后来由Timm Martin翻译成英文发表在DevTopics上。

以下是如何注释代码的13tips,它们会在日后帮助你更容易理解和维护代码。

1. Comment each level(每个级别的注释有统一的风格)

注释每一个代码块,并且在各个级别的代码块上,要使用统一的注释方法。例如:

对于类,应包含简单的描述、作者以及最近的更改日期 
对于方法,应包含目的的描述、功能、参数以及返回值

使用统一的注释规则对于一个团队是非常重要的。当然,更加推荐使用注释的约定和工具(例如,C#的XML或Java的Javadoc),它们会是注释变得更加容易。

2. Use paragraph comments(对段落注释)

将代码块分成若干完成独立功能的"段落",并在每个"段落"前添加注释,向读者说明"即将发生什么"。

// Check that all data records

// are correct

foreach (Record record in records)

{

if (rec.checkStatus()==Status.OK)

{

. . .

}

}

// Now we begin to perform

// transactions

Context ctx = new ApplicationContext();

ctx.BeginTransaction();

. . .

3. Align comments in consecutive lines(对齐注释行)

对于拥有后缀式注释的多行代码,排版注释代码,使各行注释对齐到同一列。

const MAX_ITEMS = 10; // maximum number of packets

const MASK = 0x1F; // mask bit TCP

一些开发人员使用tab来对齐注释,有些则使用空格。但是由于tab在不同的编辑器或者IDE上会有所不同,最好还是使用空格。

4. Don't insult the reader's intelligence(不要侮辱读者的智商)

不要写没用的注释,例如:

if (a == 5) // if a equals 5

counter = 0; // set the counter to zero

写这种无用的注释不但浪费你的时间,而且读者在读这种很容易理解的代码时,很容易被你的注释转移注意力,浪费了时间。

5. Be polite(要有礼貌)

不要写不礼貌的注释代码,例如"注意,愚蠢的使用者输入了一个负数",或者"修正由于最初的开发者的可怜且愚蠢的编码所造成的副作用"。这样的注释冒犯了作者,而且你并不知道谁会在将来读到这段注释--你老板、客户或者是你在注释中冒犯的那个可怜且愚蠢的开发人员。

6. Get to the point(简明扼要)

不要在注释中写的过多,不要写玩笑、诗和冗长的话。总之,注释需要简单直接。

7. Use a consistent style(风格一致)

一些人认为注释应该能让非程序员也能看懂,但是也有些人认为注释仅仅是指导程序员的。不管怎么说,像《Successful Strategies for Commenting Code》中所说,真正重要的是注释始终面向同一个读者,在这点上,应该保持一致。个人认为,我很怀疑会有非程序人员阅读代码,所以应该把阅读注释的对象定位为开发人员。

int Estimate(int x, int y)

{

// TODO: implement the calculations

return 0;

}

9. Comment code while writing it(写代码的同时,完成注释)

写代码的同时添加注释,因为此时你的思路最为清晰。如果你把注释的任务留到最后,那么你相当于经历了两次编码。"我没有时间注释""我太忙了""项目耽误了"这些往往是不写注释的理由。所以,程序员们认为,最理想的解决方法是‘写代码前先写注释'。例如:

public void ProcessOrder()

{

// Make sure the products are available

// Check that the customer is valid

// Send the order to the store

// Generate bill

}

10. Write comments as if they were for you (in fact, they are)把代码的读者想象成你自己(实际情况往往如此)

注释代码时,不仅仅要为将来可能维护你代码的人考虑,而且要考虑到读注释的可能是你。伟大的Phil Haack说过:"每当有一行代码被敲上屏幕,你都要从维护的角度审视一遍这段代码。" "As soon as a line of code is laid on the screen, you're in maintenance mode on that piece of code."(著名的话不敢不附上原句)

结果,我们自己往往是我们良好注释的受益者,或者是烂注释的受害人。

11. Update comments when you update the code(更新代码时,记得更新注释)

如果不能随着代码的更新而更新注释,那么即使再准确的注释也毫无意义。代码和注释必须同步,否则这些注释对于维护你代码的程序人员来说简直是折磨。在使用refactoring工具自动更新代码时,应尤其注意,它们会自动更新代码而不会改变注释,这些注释自然就过期了。

 

12. The golden rule of comments: readable code(可读性良好的代码是最好的注释)

对于许多程序员来说,基本的原则之一就是:让代码自己说话。有人可能会怀疑这是那些不爱写注释的程序员的借口,然而这确实是一个不争的事实。自我解释良好的代码对于编码来说大有益处,不但代码容易理解甚至使注释变得没有必要。举例来说,在我的文章《Fluid Interfaces》中展示了什么是清晰的自我解释型代码:

Calculator calc = new Calculator();

calc.Set(0);

calc.Add(10);

calc.Multiply(2);

calc.Subtract(4);

Console.WriteLine( "Result: {0}", calc.Get() );

在本例中,注释是没必要的,并且会违背tip#4 。为了使代码更加可读,应该考虑使用适当的名字(像在经典的《Ottinger's Rules》描述的),确保正确的缩进和代码风格栏线(代码风格栏线是类似于#region #endregion这类的东西吧?)。如果这一点做的不好,直接后果是,你的注释看起来就像是在为晦涩难懂的代码而道歉。

13. Share these tips with your colleagues(与你的同事share这些tips)

尽管tip#10中曾说过良好的注释会是自己从中收益,但是这些tips会使所有开发人员收益,尤其是在团队合作的环境中。因此大方的与同事分享这些注释的技巧,让我们都能写出易懂而且好维护的代码。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLのストアドプロシージャとは何ですか?MySQLのストアドプロシージャとは何ですか?May 01, 2025 am 12:27 AM

ストアドプロシージャは、パフォーマンスを向上させ、複雑な操作を簡素化するためのMySQLのSQLステートメントを事前に拡大します。 1。パフォーマンスの改善:最初のコンピレーションの後、後続の呼び出しを再コンパイルする必要はありません。 2。セキュリティの改善:許可制御を通じてデータテーブルアクセスを制限します。 3.複雑な操作の簡素化:複数のSQLステートメントを組み合わせて、アプリケーションレイヤーロジックを簡素化します。

クエリキャッシュはMySQLでどのように機能しますか?クエリキャッシュはMySQLでどのように機能しますか?May 01, 2025 am 12:26 AM

MySQLクエリキャッシュの実用的な原則は、選択クエリの結果を保存することであり、同じクエリが再度実行されると、キャッシュされた結果が直接返されます。 1)クエリキャッシュはデータベースの読み取りパフォーマンスを改善し、ハッシュ値を使用してキャッシュされた結果を見つけます。 2)単純な構成、mysql構成ファイルでquery_cache_typeとquery_cache_sizeを設定します。 3)SQL_NO_CACHEキーワードを使用して、特定のクエリのキャッシュを無効にします。 4)高周波更新環境では、クエリキャッシュがパフォーマンスボトルネックを引き起こし、パラメーターの監視と調整を通じて使用するために最適化する必要がある場合があります。

他のリレーショナルデータベースでMySQLを使用することの利点は何ですか?他のリレーショナルデータベースでMySQLを使用することの利点は何ですか?May 01, 2025 am 12:18 AM

MySQLがさまざまなプロジェクトで広く使用されている理由には、次のものがあります。1。複数のストレージエンジンをサポートする高性能とスケーラビリティ。 2。使いやすく、メンテナンス、シンプルな構成とリッチツール。 3。豊富なエコシステム、多数のコミュニティとサードパーティのツールサポートを魅了します。 4。複数のオペレーティングシステムに適したクロスプラットフォームサポート。

MySQLのデータベースアップグレードをどのように処理しますか?MySQLのデータベースアップグレードをどのように処理しますか?Apr 30, 2025 am 12:28 AM

MySQLデータベースをアップグレードする手順には次のものがあります。1。データベースをバックアップします。2。現在のMySQLサービスを停止します。3。MySQLの新しいバージョンをインストールします。アップグレードプロセス中に互換性の問題が必要であり、Perconatoolkitなどの高度なツールをテストと最適化に使用できます。

MySQLに使用できるさまざまなバックアップ戦略は何ですか?MySQLに使用できるさまざまなバックアップ戦略は何ですか?Apr 30, 2025 am 12:28 AM

MySQLバックアップポリシーには、論理バックアップ、物理バックアップ、増分バックアップ、レプリケーションベースのバックアップ、クラウドバックアップが含まれます。 1. Logical BackupはMySqldumpを使用してデータベースの構造とデータをエクスポートします。これは、小さなデータベースとバージョンの移行に適しています。 2.物理バックアップは、データファイルをコピーすることで高速かつ包括的ですが、データベースの一貫性が必要です。 3.インクリメンタルバックアップは、バイナリロギングを使用して変更を記録します。これは、大規模なデータベースに適しています。 4.レプリケーションベースのバックアップは、サーバーからバックアップすることにより、生産システムへの影響を減らします。 5. Amazonrdsなどのクラウドバックアップは自動化ソリューションを提供しますが、コストと制御を考慮する必要があります。ポリシーを選択するときは、データベースサイズ、ダウンタイム許容度、回復時間、および回復ポイントの目標を考慮する必要があります。

MySQLクラスタリングとは何ですか?MySQLクラスタリングとは何ですか?Apr 30, 2025 am 12:28 AM

mysqlclusteringenhancesdatabaserobustnessnessnessnessnessnistandistributiondistributingdataacrossmultiplenodes.itesthendbenginefordatareplication andfaulttolerance、保証highavailability.setupinvolvesconfiguringmanagement、data、ssqlnodes、carefulmonitoringringandpe

MySQLのパフォーマンスのためにデータベーススキーマ設計を最適化するにはどうすればよいですか?MySQLのパフォーマンスのためにデータベーススキーマ設計を最適化するにはどうすればよいですか?Apr 30, 2025 am 12:27 AM

MySQLのデータベーススキーマ設計の最適化は、次の手順を通じてパフォーマンスを改善できます。1。インデックス最適化:一般的なクエリ列にインデックスを作成し、クエリのオーバーヘッドのバランスをとり、更新を挿入します。 2。テーブル構造の最適化:正規化または反通常化によりデータ冗長性を削減し、アクセス効率を改善します。 3。データ型の選択:Varcharの代わりにINTなどの適切なデータ型を使用して、ストレージスペースを削減します。 4。パーティション化とサブテーブル:大量のデータボリュームの場合、パーティション化とサブテーブルを使用してデータを分散させてクエリとメンテナンスの効率を改善します。

MySQLのパフォーマンスをどのように最適化できますか?MySQLのパフォーマンスをどのように最適化できますか?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance、soflowthesesteps:1)properindexingtospeedupqueries、2)useexplaintoanalyzeandoptimize Queryperformance、3)AductServerContingSettingStingsinginginnodb_buffer_pool_sizeandmax_connections、4)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター