├── .github └── FUNDING.yml ├── naming-cheatsheet.png ├── LICENSE.md └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: ["https://ashokri.com/blog/donate/"] 2 | -------------------------------------------------------------------------------- /naming-cheatsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amirshnll/naming-cheatsheet/HEAD/naming-cheatsheet.png -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018—preset Artem Zakharchenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |

4 | 5 | Naming cheatsheet 6 | 7 |

8 | 9 | # قواعد نام گذاری توابع و متغیر‌ها 10 | 11 | - [از زبان انگلیسی استفاده کنید](#english-language) 12 | - [قاعده نام گذاری مشخص داشته باشید](#naming-convention) 13 | - [از قانون S-I-D پیروی کنید](#s-i-d) 14 | - [خلاصه نکنید](#avoid-contractions) 15 | - [از تکرار دوری کنید](#avoid-context-duplication) 16 | - [از طریق نام نتیجه را معلوم کنید](#reflect-the-expected-result) 17 | - [نام گذاری توابع](#naming-functions) 18 | - [الگوی A / HC / LC](#ahclc-pattern) 19 | - [در نام از فعل استفاده کنید](#actions) 20 | - [نام باید عملکرد را مشخص کند](#context) 21 | - [پیشوندها](#prefixes) 22 | - [از کلمات مفرد و جمع در نام استفاده کنید](#singular-and-plurals) 23 | 24 | --- 25 | 26 | انتخاب نام کار پیچیده ای است و این راهنما قرار است کار را ساده تر کند. 27 | 28 | دقت کنید ممکن است در زبان های مختلف این موضوع متفاوت باشد اما در این صفحه مثال ها با جاوااسکریپت نمایش داده شده است. 29 | 30 | 31 | ## از زبان انگلیسی استفاده کنید 32 | 33 | از زبان انگلیسی برای نام گذاری متغیرها و تابع ها استفاده کنید. 34 | 35 |
36 | 37 | ```js 38 | /* Bad */ 39 | const primerNombre = 'Gustavo' 40 | const amigos = ['Kate', 'John'] 41 | 42 | /* Good */ 43 | const firstName = 'Gustavo' 44 | const friends = ['Kate', 'John'] 45 | ``` 46 | 47 |
48 | 49 | > چه بخواهیم و چه نخواهیم ، انگلیسی زبان غالب در برنامه نویسی است: نحو تمام زبان های برنامه نویسی به انگلیسی ، و همچنین مستندات و مطالب آموزشی بی شماری با این زبان نوشته شده است. با نوشتن کد خود به انگلیسی ، انسجام آن را به طرز چشمگیری افزایش می دهید. 50 | 51 | 52 | ## قاعده نام گذاری مشخص داشته باشید 53 | 54 | یگی از قواعد نام گذاری را برای خود انتخاب کنید و طبق آن پیش بروید. از بین قواعدی مثل `camelCase`, `PascalCase`, `snake_case` و ... یکی را انتخاب کنید. 55 | 56 |
57 | 58 | ```js 59 | /* Bad */ 60 | const page_count = 5 61 | const shouldUpdate = true 62 | 63 | /* Good */ 64 | const pageCount = 5 65 | const shouldUpdate = true 66 | 67 | /* Good as well */ 68 | const page_count = 5 69 | const should_update = true 70 | ``` 71 | 72 |
73 | 74 | ## از قانون S-I-D پیروی کنید 75 | 76 | یک نام باید کوتاه، بصری و توصیفی باشد: 77 | 78 | - **کوتاه یا Short**. نام باید کوتاه باشد تا در طولانی مدت به خاطر بماند 79 | - **بصری یا Intuitive**. یک نام باید به صورت طبیعی قابل خواندن باشد و این موضوع باید برای همه این طور باشد 80 | - **توصیفی یا Descriptive**. یک نام باید به کارآمد ترین روش با کاری که انجام می دهد مشخص شده باشد 81 | 82 |
83 | 84 | ```js 85 | /* Bad */ 86 | const a = 5 // "a" could mean anything 87 | const isPaginatable = a > 10 // "Paginatable" sounds extremely unnatural 88 | const shouldPaginatize = a > 10 // Made up verbs are so much fun! 89 | 90 | /* Good */ 91 | const postCount = 5 92 | const hasPagination = postCount > 10 93 | const shouldPaginate = postCount > 10 // alternatively 94 | ``` 95 | 96 |
97 | 98 | ## خلاصه نکنید 99 | 100 | از خلاصه کردن پرهیز کنید دلیل این موضوع هم این است که خلاصه کردن باعث کاهش خوانایی متن خواهد شد پس حتما در ارتباط با این موضوع پرهیز کنید. 101 | 102 |
103 | 104 | ```js 105 | /* Bad */ 106 | const onItmClk = () => {} 107 | 108 | /* Good */ 109 | const onItemClick = () => {} 110 | ``` 111 | 112 |
113 | 114 | ## از تکرار دوری کنید 115 | 116 | از تکرار جلوگیری کنید. مثلا مثل مثال زیر نام کلاس را در نام اعضا آن کلاس نبرید و استفاده نکنید. 117 | 118 |
119 | 120 | ```js 121 | class MenuItem { 122 | /* Method name duplicates the context (which is "MenuItem") */ 123 | handleMenuItemClick = (event) => { ... } 124 | 125 | /* Reads nicely as `MenuItem.handleClick()` */ 126 | handleClick = (event) => { ... } 127 | } 128 | ``` 129 | 130 |
131 | 132 | ## از طریق نام نتیجه را معلوم کنید 133 | 134 | یک نام باید نتیجه ای که بر می گرداند را دقیقا مشخص کند 135 | 136 |
137 | 138 | ```jsx 139 | /* Bad */ 140 | const isEnabled = itemCount > 3 141 | return