یک کد بو به نشانهای سطحی اشاره دارد که معمولاً به یک مشکل عمیقتر در سیستم مربوط میشود. این اصطلاح برای اولین بار توسط کنت بک در هنگام کمک به من با کتاب بازآرایی (Refactoring) مطرح شد.
تعریف سریع بالا شامل چند نکته ظریف است. اولاً، بویی بهطور تعریف چیزی است که بهسرعت قابل تشخیص است - یا بهقول من، قابل بوکشیدن است. یک مثال خوب از این موضوع، یک متد طولانی است - فقط با نگاه به کد، بینی من میلرزد اگر بیشتر از دوازده خط جاوا ببینم.
دومین نکته این است که بوها همیشه به مشکل اشاره نمیکنند. برخی متدهای طولانی مشکلی ندارند. باید عمیقتر نگاه کنید تا ببینید آیا مشکلی اساسی وجود دارد یا نه - بوها ذاتاً بد نیستند، بلکه اغلب نشانهای از یک مشکل هستند تا خود مشکل.
بهترین بوها چیزهایی هستند که بهراحتی قابل تشخیص هستند و بیشتر اوقات شما را به مشکلات واقعاً جالب هدایت میکنند. کلاسهای داده (کلاسهایی که تمام داده و هیچ رفتاری ندارند) مثالهای خوبی از این موضوع هستند. به آنها نگاه میکنید و از خودتان میپرسید چه رفتاری باید در این کلاس باشد. سپس شروع به بازآرایی میکنید تا آن رفتار را به داخل کلاس منتقل کنید. اغلب سؤالات ساده و بازآراییهای اولیه میتوانند گامی حیاتی در تبدیل اشیاء کمفایده به چیزی که واقعاً کلاس دارد، باشند.
یکی از نکات جالب درباره بوها این است که افراد بیتجربه بهراحتی میتوانند آنها را تشخیص دهند، حتی اگر دانش کافی برای ارزیابی اینکه آیا مشکل واقعی وجود دارد یا نه و یا اصلاح آنها را نداشته باشند. شنیدهام که توسعهدهندگان ارشد یک "بوی هفته" را انتخاب میکنند و از افراد میخواهند که آن بو را جستجو کرده و با اعضای ارشد تیم مطرح کنند. انجام این کار بهصورت یک بو در هر زمان، راه خوبی برای آموزش تدریجی افراد تیم به برنامهنویسان بهتر است.
این مطلب به اهمیت "کد بوها" در فرآیند توسعه نرمافزار و نقش آنها در شناسایی مشکلات عمیقتر سیستم اشاره دارد. نویسنده با ارائه مثالهای ملموس مانند متدهای طولانی و کلاسهای داده، نشان میدهد که چگونه این بوها میتوانند به توسعهدهندگان کمک کنند تا با بازآرایی کد، کیفیت سیستم را بهبود بخشند. همچنین، به آموزش تیمهای توسعه از طریق تشخیص و بررسی بوها بهعنوان روشی موثر برای افزایش مهارتهای برنامهنویسی اشاره میکند. بهطور کلی، این رویکرد میتواند به بهبود مستمر کیفیت نرمافزار و ارتقای توانمندیهای تیم توسعه کمک کند.
https://martinfowler.com/bliki/CodeSmell.html
chatgpt 4o