جاوا اسکریپت خوش زبان قسمت بیست و هفتم
ما مطمئنا می توانیم اما همانطور که در حال کپی و پیست کردن آن ها هستیم
چهار خط یک بار دیگر، توقف می کنیم و تجدید نظر می کنیم. باید راه بهتری وجود داشته باشد.
این اولین تلاش است:
تابع printZeroPaddedWithLabel (شماره، برچسب) {
اجازه دهید numberString = String(number);
while (numberString.length < 3) {
numberString = “0” + numberString;
}
console.log(`${numberString} ${label}`);
}
تابع printFarmInventory(گاو، مرغ، خوک) {
printZeroPaddedWithLabel(گاو، “گاو”);
printZeroPaddedWithLabel(مرغ، “مرغ”);
printZeroPaddedWithLabel(pigs، “Pigs”);
}
printFarmInventory(7, 11, 3);
کار می کند! اما این نام، printZeroPaddedWithLabel، کمی ناخوشایند است.
این سه چیز – چاپ، صفر کردن و اضافه کردن یک برچسب – را در یک ترکیب می کند
تک عملکردی
به جای اینکه قسمت تکراری برنامه خود را به صورت عمده فروشی برداریم، بیایید تلاش کنیم
برای انتخاب یک مفهوم واحد
تابع zeroPad (عدد، عرض) {
let string = رشته (تعداد);
while (string.length < عرض) {
string = “0” + string;
}
رشته بازگشت؛
}
تابع printFarmInventory(گاو، مرغ، خوک) {
console.log(`${zeroPad(cows, 3)} Cows`);
console.log(`${zeroPad(chickens, 3)} Chickens`);
console.log(`${zeroPad(pigs, 3)} Pigs`);
}
printFarmInventory(7, 16, 3);
یک تابع با نام خوب و واضح مانند zeroPad کار را برای کسی آسان تر می کند
که کد را می خواند تا بفهمد چه کاری انجام می دهد. و چنین عملکردی در آن مفید است
53
موقعیت های بیشتر از این برنامه خاص. برای مثال می توانید از آن استفاده کنید
برای کمک به چاپ جداول اعداد که به خوبی تراز شده اند.
عملکرد ما چقدر باید هوشمند و همه کاره باشد؟ ما می توانستیم هر چیزی بنویسیم،
از یک تابع بسیار ساده که فقط می تواند یک عدد را به عرض سه کاراکتر اضافه کند تا یک سیستم قالب بندی اعداد تعمیم یافته پیچیده که کنترل می کند
اعداد کسری، اعداد منفی، تراز کردن نقاط اعشاری، پر کردن با
شخصیت های مختلف و غیره
یک اصل مفید این است که زیرکی را اضافه نکنید مگر اینکه کاملاً مطمئن باشید
شما به آن نیاز خواهید داشت نوشتن “چارچوب های” کلی برای آن می تواند وسوسه انگیز باشد
هر ذره عملکردی که با آن روبرو می شوید. در مقابل آن اصرار مقاومت کنید. هیچکدام را نخواهید گرفت
کار واقعی انجام شده است – شما فقط کدی را می نویسید که هرگز استفاده نمی کنید.
عملکردها و عوارض جانبی
عملکردها را می توان تقریباً به مواردی تقسیم کرد که به دلیل عوارض جانبی آنها نامیده می شود
و آنهایی که برای مقدار بازگشتی خود فراخوانی می شوند. (اگرچه قطعا همینطور است
ممکن است هم عوارض جانبی داشته باشد و هم مقداری را برگرداند.)
اولین تابع کمکی در مثال مزرعه، printZeroPaddedWithLabel،
برای اثر جانبی آن نامیده می شود: یک خط چاپ می کند. نسخه دوم ZeroPad است
مقدار بازگشتی آن را فراخوانی کرد. تصادفی نیست که دومی در بیشتر مفید است
موقعیت هایی نسبت به حالت اول توابعی که ارزش ایجاد می کنند راحت تر ترکیب می شوند
روش های جدید نسبت به عملکردهایی که مستقیماً عوارض جانبی را انجام می دهند.
تابع خالص، نوع خاصی از عملکرد ارزش آفرین است که نه تنها
هیچ عوارض جانبی ندارد، اما به عوارض جانبی سایر کدها نیز متکی نیست
برای مثال، پیوندهای سراسری را که ممکن است مقدارشان تغییر کند، نمی خواند. یک ناب
تابع دارای ویژگی دلپذیری است که وقتی با همان آرگومان ها فراخوانی می شود.
قوانین ارسال دیدگاه در سایت