برنامه نویسی را اصولی یاد بگیرید
7 نکته برای نوشتن کدهایی بهتر و پاکیزه‌تر
مهندسی نرم افزار تنها به یادگیری یک زبان برنامه نویسی و ساخت چند نرم افزار محدود نمی‌شود. از شما به عنوان یک مهندس یا توسعه دهنده نرم افزار انتظار می‌رود تا نرم افزار را خوب بنويسید. حال سوال اینجا است که چه چیزی باعث می‌شود یک نرم افزار خوب به نظر برسد؟

1606683296_1_0.gif

با خواندن بخش‌هایی از کد نوشته شده برای یک پروژه می‌توان در مورد خوب یا بد بودن آن قضاوت کرد. اگر این کد به سادگی قابل درک بوده و بتوان به راحتی آن را تغییر داد مسلما می‌توان گفت که این نرم افزار به خوبی نوشته شده است و توسعه دهندگان از کار کردن روی آن رضایت خواهند داشت.

آنچه مسلم است این است که هیچکس دوست ندارد پروژه‌ای را که کدنویسی در آن درهم ریخته و بدون نظم و ترتیب انجام گرفته ادامه دهد. گاهی اوقات توسعه دهندگان به دلیل کمبود وقت و لزوم تحویل سریع کار از پاکیزه نوشتن کدها اجتناب می‌کنند. آنها عجله می‌کنند تا سریع‌تر پیش بروند اما در نهایت آنچه رخ می‌دهد کند شدن کار است. عجله کردن در کدنویسی باگ‌های بیشتری به همراه خواهد داشت و آنها مجبورند برای برطرف کردن این باگ‌ها دوباره به بخش‌هایی از کد نوشته شده رجوع کنند و این فرآيند ممکن است چندین بار تکرار شود. این فرآيند بسیار بیشتر از مدت زمان صرف شده برای نوشتن خود برنامه زمان می‌برد.

فرقی نمی‌کند که شما یک برنامه نویس تازه کار یا با تجربه باشید، شما باید همیشه تلاش کنید تا به یک برنامه نویس خوب تبدیل شوید. فراموش نکنید که این شما هستید که مسئولیت کیفیت کدهای خود را برعهده دارید، بنابراین باید برنامه خود را به اندازه کافی خوب آماده کنید تا توسعه دهندگان دیگر هم بتوانند آن را درک کنند.

چه چیزی باعث می‌شود یک کد خوب و پاکیزه باشد؟

یک کد تمیز و قابل فهم مشخصاتی دارد که در ادامه به برخی از این شرایط اشاره می‌کنیم:

1. کد پاکیزه باید خوانا و موجز باشد. اگر شخص دیگری قرار باشد کد شما را بخواند باید این حس را داشته باشد که می‌تواند همه آن را به راحتی خوانده و درک کند.

2. کد پاکیزه باید موزون و چشم نواز باشد. کد شما باید مرتب و منظم باشد تا دیگران از دیدن آن لذت ببرند.

3. یک کد پاکیزه باید به راحتی قابل درک، قابل تغییر و قابل نگهداری باشد.

4. کد پاکیزه باید بتواند تمام آزمون‌ها را پشت سر بگذارد.

چگونه کدهای خود را بهتر و پاکیزه‌تر بنویسیم؟

1. از اسامی‌ بامعنی استفاده کنید  

شما از نام‌های بسیار زیادی برای متغیرها ، توابع ، کلاس‌ها ، آرگومان‌ها ، ماژول‌ها ، بسته‌ها ، دایرکتوری‌ها و چیزهایی شبیه به این استفاده خواهید کرد. عادت کنید که در کدهای خود از اسامی‌ بامعنی و قابل درک استفاده کنید. اسمی‌ که شما در کد خود به کار می‌برید باید تا حد امکان به سه پرسش چه کاری انجام می‌دهد؟ چرا وجود دارد؟ و چگونه از آن استفاده می‌شود؟ پاسخ دهد. برای مثال در کد زیر شما مجبورید برای نام متغیری که ایجاد کرده اید با استفاده از یک کامنت توضیحات وارد کنید که به هیچ عنوان مشخصه یک کد خوب را رعایت نمی‌کند.

int b; // number of users.

نامی‌ که در کد خود تعریف می‌کنید باید اهداف آن را آشکار کند. بنابراین برای مثال بالا بهتر است نام متغیر چیزی شبیه به int number_of_users باشد. همچنین سعی کنید اسامی‌ را به سه یا چهار کلمه خلاصه کنید.

2. اصل مسئولیت واحد (SRP)

استفاده از توابع، کلاس‌ها و متدها روش خوبی برای سازماندهی کدها در یک زبان برنامه نویسی است، بنابراین وقتی شما در حال نوشتن یک کد هستید باید مراقب باشید تا تابعی که می‌نویسید تنها قصد و هدف مشخص شما را تامین کند. اغلب تازه کارها این اشتباه را مرتکب شده و تابعی می‌نویسند که بتواند چند وظیفه مختلف را انجام دهد. این کار باعث سردرگمی‌ سایر توسعه دهندگان شده و باعث ایجاد مشکلاتی در زمان برطرف کردن باگ‌ها می‌شود. بنابراین زمان نوشتن یک تابع باید دو نکته را مد نظر داشته باشید تا تابع شما تمیز و به راحتی قابل درک باشد:

1. تابع نوشته شده باید کوچک باشد.

2. این تابع باید تنها یک کار را (به درستی) انجام دهد.

این دو نکته مشخص می‌کند که تابع شما باید قانون اصل مسئولیت واحد (SRP) را رعایت کرده و نباید ساختار تو در تو داشته باشد. پیروی از این تکنیک باعث می‌شود کد شما خواناتر بوده و سایر توسعه دهندگان بتوانند آن را به راحتی درک کرده و در بخش‌های دیگر از آن استفاده کنند. همچنین اطمینان حاصل کنید تابع شما بیشتر از سه آرگمان نداشته باشد. بیش از این تعداد آرگمان باعث می‌شود کد شما پیچیده و درک آن دشوارتر و دیباگ کردن آن سخت‌تر شود.

علاوه بر این باید مراقب نامی‌ که برای تابع خود انتخاب می‌کنید هم باشید تا به خوبی بیانگر وظیفه‌ای که انجام می‌دهد باشد. به عنوان مثال، نام تابع زیر به درستی هدف آن که تفریق دو عدد است را نشان می‌دهد.

function subtract(x, y) {

    return x - y;

}

همچنین این تابع تنها از دو آرگمان استفاده کرده است.

3. از نوشتن کامنت‌های غیرضروری اجتناب کنید

این یک کار رایج است که توسعه دهندگان برای مشخص کردن هدف یک خط در کد خود از کامنت استفاده می‌کنند. واضح است که کامنت‌ها به توصیف کد کمک می‌کنند اما از طرفی به نگهداری بیشتری در کد شما نیاز دارند. در زمان توسعه کدها به جاهای مختلفی جابجا می‌شوند اما اگر کامنت‌ها در همان جای اول رها شده باقی بمانند مشکلات بزرگی را به وجود خواهند آورد. این امر می‌تواند باعث ایجاد سردرگمی‌ در بین توسعه دهندگان شود.

امروزه ساختار فرامین زبان‌های برنامه نویسی مدرن بسیار شبیه به زبان انگلیسی است و می‌تواند به خوبی بیانگر وظیفه‌ای که یک خط کد انجام می‌دهد باشد و دیگر کمتر نیاز به استفاده از کامنت‌ها خواهد بود.

4. کدها را خوانا بنویسید

خیلی از افراد به ویژه مبتدیان هنگام نوشتن کد به اشتباه همه چیز را در یک خط می‌نویسند و از فاصله گذاری، تو رفتگی و خط جدید در کد خود استفاده نمی‌کنند. این کار باعث شلختگی در کد شده و نگهداری از آن را دشوار می‌کند. خواندن و درک یک کد درهم ریخته و شلوغ زمان زیادی از وقت سایر توسعه دهندگانی که روی یک پروژه کار می‌کنند را تلف خواهد کرد، بنابراین همیشه به قالب بندی کد خود توجه کنید.

اطمینان حاصل کنید که کد شما به اندازه لازم و کافی از فاصله گذاری، تو رفتگی و خط جدید برخوردار باشد. یک توسعه دهنده نرم افزار همیشه به خاطر سبک برنامه نویسی که در کد خود دنبال می‌کند شناخته می‌شود.

// Bad Code

class CarouselRightArrow extends Component{render(){return ( <a href="#" className="carousel__arrow carousel__arrow--left" onClick={this.props.onClick}> <span className="fa fa-2x fa-angle-left"/> </a> );}};

  

// Good Code

class CarouselRightArrow extends Component {

  render() {

    return (

      <a

        href="#"

        className="carousel__arrow carousel__arrow--left"

        onClick={this.props.onClick}

      >

        <span className="fa fa-2x fa-angle-left" />

      </a>

    );

  }

};

5. کد خود را با واحدهای آزمایشی بنويسید

نوشتن واحدهای آزمایشی در توسعه اهمیت زیادی دارد. این باعث می‌شود کد شما تمیز، انعطاف پذیر و قابل نگهداری باشد. همچنین ایجاد تغییرات در کد و کم کردن باگ‌ها راحت‌تر خواهد شد. یک فرآیند در توسعه نرم افزاری به نام توسعه آزمون محور یا Test Driven Development (TDD) وجود دارد که در آن الزامات به موارد آزمایشی مشخصی تبدیل شده و سپس نرم افزار برای قبولی در آزمون‌های جدید بهبود پیدا می‌کند.

سه قانون برای TDD وجود دارد:

1. شما تا مادامی‌ که یک کد مراحل آزمون واحد خطا را پشت سر نگذاشته اجازه تبدیل آن به یک محصول نهایی را ندارید.

2. شما مجاز به نوشتن چیزی بیشتر از یک واحد آزمایشی برای تصحیح خطا نیستید.

3. تا زمانی که یک کد مراحل آزمايش خود را پشت سر نگذاشته است اجازه نوشتن کدهای تولیدی بیشتر را ندارید.

6. مراقب وابستگی‌ها باشید

در توسعه نرم افزار شما واقعا باید مراقب وابستگی‌های موجود در آن باشید. تا حد ممکن وابستگی‌های شما باید همیشه یک جهته باشد. فرض کنید یک کلاس آشپزخانه داریم که به یک کلاس ماشین ظرفشویی وابسته است. تا زمانی که این کلاس ماشین ظرفشویی به کلاس آشپزخانه وابسته نباشد این یک وابستگی یک جهته محسوب می‌شود. کلاس آشپزخانه فقط از ماشین ظرفشویی استفاده می‌کند اما ماشین ظرفشویی اهمیتی ندارد و هرکسی می‌ تواند از آن استفاده کند. مدیریت این مثال از وابستگی یک طرفه راحت‌تر است اما غیر ممکن است که همیشه یک وابستگی یک طرفه داشته باشیم. بنابراین باید سعی کنیم تا جای ممکن از این روش استفاده کنیم. وقتی وابستگی‌ها چند طرفه می‌شود انجام کارها پیچیده‌تر خواهد شد. بنابراین همیشه مراقب مدیریت وابستگی‌ها باشید.

7. پروژه خود را به خوبی سازماندهی کنید

این یک مشکل بسیار شایع در توسعه نرم افزاری است که ما تعداد زیادی فایل یا فولدر را در پروژه خود اضافه و حذف می‌ کنیم و گاهی اوقات درک و کار روی چنین پروژه‌هایی برای سایر توسعه دهندگان پیچیده و آزار دهنده می‌شود. قابل درک است که وقتی یک پروژه گسترش پیدا می‌کند سازماندهی یک باره فایل‌ها و فولدرها کار چندان راحتی نیست اما توجه به آن اهمیت بسیار زیادی دارد. ساماندهی درست فایل‌ها و فولدرها همه چیز را روشن می‌کند و باعث می‌شود جستجوی یک فایل خاص و ایجاد تغییر در آن آسان‌تر شود. بنابراین اطمینان حاصل کنید که ساختار فولدرهای شما باید به شکلی سازمان یافته تنظیم شده باشد (همین مورد برای کدهای شما نیز صدق می‌کند).

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟