نکاتی برای توسعه دهندگان Node.js - سری اول

گردآوری و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 09 بهمن 1396
دسته بندی ها : نود جی اس

در این مقاله می خواهیم یکسری تمرین درمورد استایل کدنویسی و توسعه در Node.js انجام بدیم. 

استایل کدنویسی

قرارداد Callback

ماژول ها باید یک رابط error-first بصورت callback قرار بدهند. یک چیزی مثل این :

module.exports = function (dragonName, callback) {  
  // do some stuff here
  var dragon = createDragon(dragonName);

  // note, that the first parameter is the error
  // which is null here
  // but if an error occurs, then a new Error
  // should be passed here
  return callback(null, dragon);
}

همیشه خطاهای callback ها رو چک کنید

برای درک بهتر این موضوع که چرا باید اینکار انجام بشه, ابتدا با یک مثال شروع می کنیم که در هر مسیر ممکن شکسته شده (به مشکل خورده) و سپس مشکلش رو حل میکنیم.

// this example is **BROKEN**, we will fix it soon :)
var fs = require('fs');

function readJSON(filePath, callback) {  
  fs.readFile(filePath, function(err, data) {  
    callback(JSON.parse(data));
  });
}

readJSON('./package.json', function (err, pkg) { ... }

مشکل اول تابع readJSON هست که هیچ وقت چک نشده که ممکنه خطایی درطول اجرا پیش بیاد. شما باید همیشه این خطاها رو چک کنید.

نسخه ی اصلاح شده :

// this example is **STILL BROKEN**, we are fixing it!
function readJSON(filePath, callback) {  
  fs.readFile(filePath, function(err, data) {
    // here we check, if an error happened
    if (err) {
      // yep, pass the error to the callback
      // remember: error-first callbacks
      callback(err);
    }

    // no error, pass a null and the JSON
    callback(null, JSON.parse(data));
  });
}

Return در callback ها

یکی از مشکلاتی که همچنان در کد بالا وجود داره اینه که اگر خطایی رخ بده برنامه در شرایط if متوقف نمیشه و ادامه پیدا می کنه. این میتونه باعث اتفاقات ناخواسته بشه. بهتره همیشه callback ها رو return کنید :

// this example is **STILL BROKEN**, we are fixing it!
function readJSON(filePath, callback) {  
  fs.readFile(filePath, function(err, data) {
    if (err) {
      return callback(err);
    }

    return callback(null, JSON.parse(data));
  });
}

استفاده از try-catch فقط در کد sync

یکی از چیزهایی که باید مراقب باشیم JSON.parse هست. اگر JSON.parse قادر به تبدیل رشته ورودی به یک فرمت معتبر JSON نباشه میتونه منجر به خطا بشه.

یک JSON.parse بصورت همگام اجرا میشه پس ما میتونیم از طریق بلاک try-catch کنترلش کنیم. توجه کنید که این ترفند برای callback ها کار نمیکنه.

// this example **WORKS**! :)
function readJSON(filePath, callback) {  
  fs.readFile(filePath, function(err, data) {
    var parsedJson;

    // Handle error
    if (err) {
       return callback(err);
    }

    // Parse JSON
    try {
      parsedJson = JSON.parse(data);
    } catch (exception) {
      return callback(exception);
    }

    // Everything is ok
    return callback(null, parsedJson);
  });
}

از استفاده ی this و new خودداری کنید

الزام آور بودن یک موضوع خاص در node یک پیروزی نیست, چون node تعداد زیادی callback پاس میده و بطور سنگین از توابع سطح بالا استفاده میکنه تا روند رو مدیریت کنه. استفاده از استایل توابع شما رو تا حد زیادی مصون نگه میداره.

ماژول های کوچک بسازید

مثل یونیکس عمل کنید : 

"توسعه دهندگان باید یک برنامه شامل قطعات ساده ای که بخوبی بهم وصل شدند, بسازند, پس مشکلات محلی هستند و قطعات برنامه میتونه در آینده جایگزین بشه تا ویزگی های جدیدی بوجود بیاد."

کار رو زیاد گره ندید - ساده بگیرید, یک ماژول باید یک کار انجام بده, ولی به بهترین نحو!

منبع

مقالات پیشنهادی

منابع تازه برای توسعه دهندگان Front-end - سری 9

امروزه ابزار ها ، کتابخانه ها و فریمورک های مختلفی بصورت روزانه برای توسعه دهنگاه Front-end ارائه می شود تا آنها بتوانند سریع تر ، بهتر و راحتر پروژه...

منابع تازه برای توسعه دهندگان Front-end - سری اول

امروزه ابزار ها ، کتابخانه ها و فریمورک های مختلفی بصورت روزانه برای توسعه دهنگاه Front-end ارائه می شود تا آنها بتوانند سریع تر ، بهتر و راحتر پروژه...

منابع تازه برای توسعه دهندگان Front-end - سری 10

امروزه ابزار ها ، کتابخانه ها و فریمورک های مختلفی بصورت روزانه برای توسعه دهنگاه Front-end ارائه می شود تا آنها بتوانند سریع تر ، بهتر و راحتر پروژه...

نکاتی برای توسعه دهندگان Node.js - سری دوم

در سری قبل بیشتر درمورد نکات استایل کدنویسی در Node صحبت کردیم. در این سری علاوه بر اون به نکات فرآیند گردش کار در Node هم اشاره می کنیم.