‎‎بهترين روشها در جاوااسكريپتJavaScript Best Practices -‎

Previous >    <Next  

‎از استفاده موارد‎new , ==‎ و ‎eval()‎‎ ‎اجتناب كنيد.

‎‎اجتناب از متغيرهاي سراسريAvoid Global Variables -‎

‎‎استفاده از متغير هاي سراسر در حد اقل باشد .اين مورد شامل همه نوع دادها ،اشياء و توابع است.

‎متغير ها و توابع سراسري را ميتوان در اسكريپت هاي ديگر بازنويسي كرد .از متغيرهاي محلي بجاي ‎آنها بكارببريد و روش استفاده آنها را بدانيد.

‎Always Declare Local Variables‎

‎‎هميشه متغير هاي محلي اعلام كنيد

‎همه متغير هائيكه در يك تابع استفاده ميكنيد، حداكثر محلي تعريف شوند .متغير هاي محلي بايد ‎var‎‎تعريف شوند، در غير اينصورت با ‎let , const‎ متغيرهاي ‎سراسري هستند.

‎‎در حالت سختگيرانه اجازه تعريف دوباره متغير را نداريد.

‎‎تعاريف در بالاDeclarations on Top -‎

‎يك روش خوب كد نويسي اينستكه دستورتعاريف در بالاي اسكريپت يا تابع قرار گيرد .اين داراي ‎مزيت هاي زيرند:

// Declare at the beginning
let firstName, lastName, price, discount, fullPrice;

// Use later
firstName = "John";
lastName = "Doe";

price = 19.90;
discount = 0.10;

fullPrice = price - discount;

‎‎اين مورد براي متغير هاي حلقه هم صادق است.

for (let i = 0; i < 5; i++) {

‎‎تنظيم مقاديراوليه متغيرهاInitialize Variables -‎

‎‎بهترين روش براي تنظيم مقدار متغيرها در تعاريف آنهاست .داراي مزيت هاي زيراست:

// Declare and initiate at the beginning
let firstName = "";
let lastName = "";
let price = 0;
let discount = 0;
let fullPrice = 0,
const myArray = [];
const myObject = {};

‎‎تنظيم مقادير اوليه متغيرها انديشه به استفاده ونوع داده ها را ايجاد ميكند.

‎‎تعريف اشياء با كي وردconst

‎‎تعريف اشياء با‎const‎ از هرگونه حادثه تغييرنوع جلوگيري ميكند .

‎‎مثال ـ مورد اول تغيير نوع امكان پذير و در دومي امكان پذير نيست

let car = {type:"Fiat", model:"500", color:"white"};
car = "Fiat";      // Changes object to string
const car = {type:"Fiat", model:"500", color:"white"};
car = "Fiat";      // Not possible

‎‎تعاريف آرايه ها باconst

‎‎تعريف آرايه با‎const‎ از هرگونه حادثه تغييرنوع جلوگيري ميكند.

‎‎مثال ـ مورد اول تغيير نوع انجام ميشود، مورد دوم خير

let cars = ["Saab", "Volvo", "BMW"];
cars = 3;    // Changes array to number
const cars = ["Saab", "Volvo", "BMW"];
cars = 3;    // Not possible

‎‎عدم استفاده ازnew براي اشياء

‎‎بجاي آن ازموارد زير استفاده كنيد:

‎‎مثال

let x1 = "";             // new primitive string
let x2 = 0;              // new primitive number
let x3 = false;          // new primitive boolean
const x4 = {};           // new object
const x5 = [];           // new array object
const x6 = /()/;         // new regexp object
const x7 = function(){}; // new function object

--(go to editor for change code and run)

‎Beware of Automatic Type Conversions‎

‎‎دوري از تبديلات نوع خودكار

‎جاوااسكريپت نوع داده را رها كرده است .يك متغير ميتواند شامل تمام انواع داده باشد .يك ‎متغير ميتواند نوع داده اي خودرا تغيير دهد.

‎‎مثال ـ تغيير نوع داده متغير

let x = "Hello";     // typeof x is a string
x = 5; 

--(go to editor for change code and run)

‎دوري از اعداديكه اتفاقي به رشته يا‎NaN‎ تبديل ميشوند .هنگاميكه عمل محاسباتي ‎انجام ميدهيد، جاوااسكريپت ميتواند اعداد را به رشته تبديل كند..

‎‎مثال ـ تبديل ناخواسته عدد به رشته

let x = 5 + 7;       // x.valueOf() is 12,  typeof x is a number
let x = 5 + "7";     // x.valueOf() is 57,  typeof x is a string
let x = "5" + 7;     // x.valueOf() is 57,  typeof x is a string
let x = 5 - 7;       // x.valueOf() is -2,  typeof x is a number
let x = 5 - "7";     // x.valueOf() is -2,  typeof x is a number
let x = "5" - 7;     // x.valueOf() is -2,  typeof x is a number
let x = 5 - "x";     // x.valueOf() is NaN, typeof x is a number

--(go to editor for change code and run)

‎‎منها نمودن يك رشته از رشته ديگر توليد خطا نميكند، بلكه نتيجه برگشتي‎NaN‎ است .

‎‎مثال ـ تفريق رشته

"Hello" - "Dolly"    // returns NaN

--(go to editor for change code and run)

‎‎در مقايسه تساوي‎===‎ استفاده كنيد .

‎عملگر‎==‎ هميشه قبل از مقايسه نوع داده ها را يكي ميكند .يعني عمل ‎تبديل ناخواسته ممكن است باشد.

‎اما در عملگر‎===‎عمل مقايسه روي نوع ومقدار ميباشدوعمل تبديلي ‎انجام نمي شود.

‎‎مثال ـ نمونه‎==‎ و ‎===

0 == "";        // true
1 == "1";       // true
1 == true;      // true

0 === "";       // false
1 === "1";      // false
1 === true;     

--(go to editor for change code and run)

‎‎استفاده پارامتر پيش فرضUse Parameter Defauls -‎

‎اگر تابعي با آرگومان يا پارامتر اشتباه فراخوان شود، مقدار پارامتر اشتباه نامشخص ‎(‎undefinded‎)‎‎در نظر گرفته ميشود .مقدار فوق ممكن كد را متوقف ‎(breack)‎‎كند .عادت خوبي است كه اگر خودتان پيش فرض مناسب را تنظيم نمائيد .

‎‎مثال ـ تنظيم پيش فرض تابع

function myFunction(x, y) {
  if  (y === undefined) {
    y = 0;
  }
}

--(go to editor for change code and run)

‎درECMAScrit 2015 اجازه تعريف پيش فرض در آرگومان تابع شده است .اين كار در تعريف تابع ‎تنظيم ميشود.

‎‎مثال ـ تنظيم پيش فرض آرگومان تابع

function (a=1, b=1) { /*function code*/ }

‎End Your Switches with Defaults‎

‎‎درانتهاي سويچها پيش فرض آنرا قراردهيد.

‎هميشه در پايان دستور‎switch‎رويداد ‎default:‎ ،را قراردهيد ‎حتي اگر فكر ميكنيد كه نياز نباشد.

‎‎مثال ـ سويچ و رويداد پيش فرض

switch (new Date().getDay()) {
  case 0:
    day = "Sunday";
    break;
  case 1:
    day = "Monday";
    break;
  case 2:
    day = "Tuesday";
    break;
  case 3:
    day = "Wednesday";
    break;
  case 4:
    day = "Thursday";
    break;
  case 5:
    day = "Friday";
    break;
  case 6:
    day = "Saturday";
    break;
  default:
    day = "Unknown";
}

--(go to editor for change code and run)

‎Avoid Numer,String and Boolean s Objects‎

‎‎ازايجاد اشياء عددي، رشته اي وبولين دوري كنيد

‎هميشه اعداد، رشته ها و بولين را بعنوان مقادير دنبال نمائيد، نه يعنوان اشياء .تعريف آنان ‎بصوت شئ باعث كاهش سرعت اجرا و ايجاد آثارنامطلوب ميكند.

‎‎مثال ـ نيتجه بد رشته بعنوان شئ

let x = "John";             
let y = new String("John");
(x === y) // is false because x is a string and y is an object.

--(go to editor for change code and run)

‎‎مثال ـ اتفاق بدتر

let x = new String("John");             
let y = new String("John");
(x == y) // is false because you cannot compare objects.

--(go to editor for change code and run)

‎‎اجتناب از استفاده‎eval()‎

‎با تابع‎eval( )‎ ميتوان متني‎(text)‎ را بعنوان كد اجرا ‎نمود .در بيشتر موارد اين كار ضروري نيست وميتوان ازطريق معمول انجام داد.


Previous >    <Next