نامگذاری Naming در Clean Code (قسمت 2)

در این بخش به روش نام گذاری در بحث کد تمیز می پردازیم.خودداری از نام گذاری بد-Avoid using bad namesخودداری از نام گذاری گمراه کننده-Avoid Misleading Namesخودداری از نشانه گزاری مجاری-Avoid Hungarian notationاستفاده از نوع نوشتاری ثابت-Use consistent capitalizationاستفاده از اسامی قابل تلفظ-Use pronounceable namesاستفاده از نشانه گذاری کملکیس-Use Camelcase notationاستفاده از نام دامنه-Use domain nameخودداری از نام گذاری بد Avoid using bad namesیک نام خوب اجازه می دهد تا کد توسط بسیاری از توسعه دهندگان مورد استفاده قرار گیرد. این نام باید آنچه را که انجام می دهد منعکس کند و context/زمینه ارائه دهد.Bad:int d;Good:int daySinceModification;خودداری از نام گذاری گمراه کننده Avoid Misleading Namesنام متغیر بازتاب دهنده محتوای درونش باشد.Bad:var dataFromDb = db.GetFromService().ToList();Good:var listOfEmployee = _employeeService.GetEmployees().ToList();خودداری از نشانه گزاری مجاری Avoid Hungarian notationنشانه گذاری مجاری خلاصه type متغیر را اول نام متغیر می آورند.این بی معنی است زیرا IDE های مدرن نوع را شناسایی می کنند.Bad:int iCounter; string strFullName; DateTime dModifiedDate;Good:int counter; string fullName; DateTime modifiedDate;همچنین نشانه گذاری مجاری نباید در پارامترها مورد استفاده قرار گیرد.Bad:public bool IsShopOpen(string pDay, int pAmount) { // some logic }Good:public bool IsShopOpen(string day, int amount) { // some logic }استفاده از نوع نوشتاری ثابت Use consistent capitalizationنوع نوشتاری ثابت در مورد متغیرها ، متدها و غیره چیزهای زیادی به شما می گوید. این قوانین ذهنی هستند ، بنابراین تیم شما می تواند هر آنچه را می خواهد انتخاب کند. نکته این است که ، مهم نیست همه شما چه چیزی را انتخاب می کنید ، فقط با هم هماهنگ باشید.Bad:const int DAYS_IN_WEEK = 7; const int daysInMonth = 30; var songs = new List<string> { 'Back In Black', 'Stairway to Heaven', 'Hey Jude' }; var Artists = new List<string> { 'ACDC', 'Led Zeppelin', 'The Beatles' }; bool EraseDatabase() {} bool Restore_database() {} class animal {} class Alpaca {}Good:const int DaysInWeek = 7; const int DaysInMonth = 30; var songs = new List<string> { 'Back In Black', 'Stairway to Heaven', 'Hey Jude' }; var artists = new List<string> { 'ACDC', 'Led Zeppelin', 'The Beatles' }; bool EraseDatabase() {} bool RestoreDatabase() {} class Animal {} class Alpaca {}استفاده از اسامی قابل تلفظ Use pronounceable namesزمان جستجوی معنای متغیرها و متدها زمانی که قابل تلفظ نیستند ، زمان خواهد برد.Bad:public class Employee { public Datetime sWorkDate { get; set; } // what the heck is this public Datetime modTime { get; set; } // same here }Good:public class Employee { public Datetime StartWorkingDate { get; set; } public Datetime ModificationTime { get; set; } }استفاده از نشانه گذاری کملکیس Use Camelcase notationبرای پارامترهای متد و متغیر از نشانه گذاری camelCase استفاده کنید.Bad:var employeephone; public double CalculateSalary(int workingdays, int workinghours) { // some logic }Good:var employeePhone; public double CalculateSalary(int workingDays, int workingHours) { // some logic }استفاده از نام دامنه Use domain nameافرادی که کد شما را می خوانند نیز برنامه نویسان هستند.نامگذاری درست هرچیزی به همه که در همان صفحه هستند کمک می کند.ما نمی خواهیم وقت بگذاریم تا برای همه توضیح دهیم متغیر یا متد برای چیست.Goodpublic class SingleObject { // create an object of SingleObject private static SingleObject _instance = new SingleObject(); // make the constructor private so that this class cannot be instantiated private SingleObject() {} // get the only object available public static SingleObject GetInstance() { return _instance; } public string ShowMessage() { return &quotHello World!&quot } } public static void main(String[] args) { // illegal construct // var object = new SingleObject(); // Get the only object available var singletonObject = SingleObject.GetInstance(); // show the message singletonObject.ShowMessage(); }منبع