コメントにはコードの場所がありますか


ホットトピック🔥


これはどんな開発チームにおいても常に大きな話題です.私は彼らのキャリアのいくつかの時点で開発者がコメントを追加するかどうかの周りの激しい議論があったことを保証することができます.
そして、私の考えは、ここにあります..…を待つ.

I believe code comments have a time and place! Comments are great, they do no harm and should be used whenever the developer feels they're suitable to explain their code.


他の共通のイデオロギー

  • コードはコメントを必要としないで、コメントを必要としない方法で書かれなければなりません.
  • すべてのクラス、プロパティ名、メソッド/関数、メソッドコードからコメントする必要があります.
  • ので、詳細にこれらを見てみましょう.

    まったくコメントはありません。


    このイデオロギーは、完全に記述的な名前で、クラス、メソッド、変数の命名に焦点を当てます.これは、それが何をするかについて説明するコメントの必要がないことを意味します.
    この例を挙げましょう
    
    var x = GetDate(tomorrowsDate);
    Console.WriteLine(x);
    
    public string GetDate(DateTime date){
       return date.DayOfWeek;
    } 
    
    これは、メソッドがあまりにも名前が曖昧であり、どのような日付が返されるのかについては曖昧である.コメントを使用しないように、“no - comment - devs”と書いてください.
    
    var dayOfWeek = GetDayOfWeekFromDate(tomorrowsDate);
    Console.WriteLine(dayOfWeek);
    
    public string GetDayOfWeekFromDate(DateTime date){
       return date.DayOfWeek;
    }
    
    この例は簡単ですが、ポイントはよくわかります.私たちが正確に何が返されるか、そして、方法が何をしようとしているかを知っているように、どんなコメントも加える必要はありません.

    コメントすべて



    これは、すべての例では、すべてがコメントされるべきであると信じています.
    
    //get day of the week from tomorrows date
    var day = getDayOfTheWeek(tomorrowsDate);
    Console.WriteLine(day);
    
    // method returns the day of the week as string from provided datetime object
    public string GetDayOfTheWeek(DateTime date){
       return date.DayOfWeek;
    }
    
    私はいくつかのDEVSもそのようなクラスのプロパティをコメントを見てきた.
    public class User {
    //Date user was created
    public DateTime CreateDate {get;set;}
    
    //Username of User
    public string Username {get;set;}
    
    }
    
    あなたは、この陽気な愚かを見つけるかもしれません、しかし、私は前に解決でこれを見ました.
    私にとって、これはオーバーキルです.変数と呼ばれるものとメソッドを見ることができます.したがって、簡単にすべての詳細なコメントを必要とせずに実行しているコードを推測することができます.

    私の意見-場所と時間がある


    過多なコメントをしないでください、彼らのために時間と場所があります.コードが自己説明的でないとき、私はコメントを利用します.私が過去に取り組んだいくつかのシステムは、非常に特定の状況のためにそこでそこでいくつかの「奇妙な」コードを畳み込むことができます.
    多分、あなたが何かをためした時間がありました、しかし、それはシステム限界または何かのために働きません.あなたはあなたの将来の自己または他の開発者にこれを説明する簡単なコメントを残すことができます.
    非常に基本的な例は次のようになります.
    public void SaveUser(User user){
      user.DateCreated = DateTime.Now();
      user.Role = Roles.Sysadmin;
    
      //need to save user and role before saving user due to system constraints.
      Db.UserRoles.Add(user);
      Db.SaveChanges();
    
      Db.Users.Add(user);
      Db.SaveChanges();
    }
    
    はい、そこのscepticsは、これが貧しいコード設計であると主張するでしょう、しかし、私たちは、時々、我々がすべてがレガシーシステムの巨大な部分を書き直すことなく、教科書でありえるコード状況に遭遇しないことを知っています.このように、我々はまだ新しいコードを書くことができます、そして、なぜ、我々が彼が何かをしなければならない理由の説明を残してください、他の人には奇妙なようです.
    ここでの議論は、次の開発者が長い間来ていて、なぜ彼らがなぜこれをしているのかを考えているのではないかということです.なぜ彼らはデータベースを二回呼び出しているのでしょうか.
    私にとってはバランスについてです.
  • は、変数名、メソッド、およびクラス
  • を使います
  • は、開発者が変数名と戻り値の型で何をしているかを推論できる論理コードを記述します.
  • は、コードが何をしているかを説明する簡潔なコメントを利用しますが、主になぜです.
  • コメントをするためだけにコメントしないでください.
  • 試してみて、DEVの笑いをするユーモラスなコメントを書いていない-それはちょうど専門家と廃棄スペースです.
  • 要約する


    バランスよく書かれた、よく名前付きコード説明説明コメントをバランスします.よく書かれた名前、そして、小さいコメントで「nice」コードを書くならば、私は他のDEVSがそれをあなたに感謝すると保証することができます、そして、コードはより扱いやすくなって、デバッグに速くなります.