PDA

View Full Version : گفتگو: نام گذاری بهینه در برنامه نویسی و ....



godofphp
پنج شنبه 21 خرداد 1394, 15:30 عصر
همانطور که از اسم تاپیک پیداست در این تاپیک هدف من این است که دوستان نظر خودشون و بهترین راه برای نامگذاری ها در برنامه نویسی رو بیان کنند
با یک مثال شروع میکنم
شما فرض کنید من یک سیستم فروشگاهی با زبان php پیاده کرده ام
کلاس های سیستم من ، دیتابیس ، جدول های دیتابیس ، فیلدهای جدول ها ، متغیر و همه ی موارد مشابه اینها دارای نامی هستند که مرتبط با کاری هست که انجام میدهند
مثلا کلاس sale برای فروش هست و تمامی موارد فروخته شده درون جدولی به نام sales ذخیره میگردد و همین جدول دارای فیلدهایی مثل good_name good_id date , .... میباشد
ولی همه ی این اسم ها قراردادی هست و اصولی نیست ... من اگر این پروژه را به کس دیگری بسپارم ممکن است زمانی طول بکشد تا این اسم ها برای برنامه نویس دیگر قابل فهم و درک باشد
پس من شخصا نتیجه گرفتم که حتما باید یک اصول و قاعده ای برای نامگذاری ها رعایت شود تا پروژه منظم باشد و در کارهای گروهی هم به مشکل برنخورد

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

saeedvir
جمعه 22 خرداد 1394, 14:48 عصر
http://www.iranweblearn.com/articles/other-articles/15-%D9%86%DA%A9%D8%AA%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%AE%D9%88%D8%A7%D9%86%D8%A7%DB%8C%DB%8C-%DA%A9%D8%AF-%D9%87%D8%A7%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87

tresa022
جمعه 22 خرداد 1394, 20:05 عصر
سلام خوب شد این تاپیک قرار داده شد
چون یادمه خودم با این مشکل مواجه بودم

معمولا تازه کار ها با ای مشکل برمیخورن و این برای حل این مشکل کافیه با نام گذاری مجارستانی آشنا بشی

و کار تمامه

توی گوگل سرچ کنید خیلی مطلب راجب این موضوع گذاشتند

Mohammadsgh
شنبه 23 خرداد 1394, 02:05 صبح
قوانین psr رو بخونین.خیلی میتونه بهتون کمک کنه

Mohammadsgh
شنبه 23 خرداد 1394, 02:07 صبح
تو گوگل بزنید psr in php

fatima-php
شنبه 23 خرداد 1394, 08:30 صبح
سلام خوب شد این تاپیک قرار داده شد
چون یادمه خودم با این مشکل مواجه بودم

معمولا تازه کار ها با ای مشکل برمیخورن و این برای حل این مشکل کافیه با نام گذاری مجارستانی آشنا بشی

و کار تمامه

توی گوگل سرچ کنید خیلی مطلب راجب این موضوع گذاشتند

با کمال احترام، نامگذاری مجارستانی امروزه کاملاً مردود شده. بهتره با همون قوانین PSR که دوستان اشاره کردن کار کنید.

godofphp
شنبه 23 خرداد 1394, 08:53 صبح
ممنون از همه ی نظرات دوستان
ولی من در مورد psr جستجو کردم نتیجه جالبی پیدا نکردم psr مخصوص تنها زبان برنامه نویسی php هست و یه سری قواعد و قانون های برنامه نویسی هست
مثلا در مورد نام گذاری های دیتابیس به درد نمیخوره

fatima-php
شنبه 23 خرداد 1394, 09:28 صبح
خوب اون قواعد برای نامگذاری شناسه ها و ساختاربندی کلاسها خیلی خوبن و اگه همونها هم رعایت بشه، بخش بزرگی از کار انجام شده. برای دیتابیس هم میتونیم تحقیق کنیم یا بحث کنیم به یه نتیجه خوب برسیم ولی چیزی که به تجربه بهم ثابت شده اینه که جون مادرتون هرچی میخواین اسم بگذارین فقط فینگلیش نگذارین

nazanin_asadi_1
شنبه 23 خرداد 1394, 09:55 صبح
خوب اون قواعد برای نامگذاری شناسه ها و ساختاربندی کلاسها خیلی خوبن و اگه همونها هم رعایت بشه، بخش بزرگی از کار انجام شده. برای دیتابیس هم میتونیم تحقیق کنیم یا بحث کنیم به یه نتیجه خوب برسیم ولی چیزی که به تجربه بهم ثابت شده اینه که جون مادرتون هرچی میخواین اسم بگذارین فقط فینگلیش نگذارین

بند آخر خیلی خوب بود یه پروژه رو داشتم نگاه میکردم اسم هایی گذاشته بود که دوساعت طول میکشید تا اسمو بتونم بخونم
funcheckkharidkalaaznamayande()

مرده بودم از خنده

من از اعداد استفاده میکنم و کاری به کار نامها و کاراکترها ندارم اینجوری حداقل وقتی که واسه انتخاب اسم هدر میره رو ندارم (چه فیلدها چه توابع چه دیتابیس چه سایت)

hamedarian2009
شنبه 23 خرداد 1394, 10:17 صبح
مثلا در مورد نام گذاری های دیتابیس به درد نمیخوره

برای نامگزاری دیتابیس و جداول و ستون ها معمولا همه حروف کوچک و به صورت snake_case نامگزاری میکنند و معمولا نام جدول به صورت جمع استفاده میشه مثلا posts

fatima-php
شنبه 23 خرداد 1394, 10:17 صبح
خوب حالا اسامی طولانی ولی خوانا اشکالی نداره. مثلاً همین تابع که گفتین، اگه اسمش checkBuyFromReseller بود، هم با معنا بود و هم بخاطر ساختار camelCase راحت میشد بخونیمش. استفاده از اعداد هم مثل num1 و... اگه منظورتونه، زیاد توصیه نمیشه. مثلاً بجای num1 و num2 اسامی firstNumber و secondNumber مناسبتره بنظرم.

tresa022
شنبه 23 خرداد 1394, 10:26 صبح
به نظرم شما کلا نامگذاری نکن (شوخیدم)

ولی ببنید باید نام گذاری داشته باشید تا بتونید هر زمان برای خوندن وقت هدر ندید و سر درد نگیرید حالا ما که پیر شدیم از همون اول با مجارستانی کار میکردیم تا الانشم هر کی که با ما کار کرده براش راحت بوده خوندن اسامی و پیداکردنشون:لبخند:

fatima-php
شنبه 23 خرداد 1394, 10:36 صبح
علت اینکه میگم اسامی رو طولانی ولی با معنا بگذاریم اینه که با وجود ویژگیهایی نظیر Autocomplete توی IDE ها، مشکل تایپ اسامی طولانی دیگه وجود نداره ولی اسامی طولانی و با معنا موقعی که میخوایم سورس کد رو بخونیم خیلی بهمون کمک میکنن.

fatima-php
شنبه 23 خرداد 1394, 10:38 صبح
قوانین PSR رو از اینجا بخونید: http://www.php-fig.org
لینکهای کنار صفحه، قواعد مختلف PSR رو نشون میدن.

hsgpro
شنبه 23 خرداد 1394, 10:40 صبح
سلام
آقا یه سوال خارج از بحث چرا توی این لینک http://www.php-fig.org/psr/psr-2/ گفته از 4 تا فاصله به جای Tab استفاده کنیم؟ بعد اینطوری حجم فایل ها به خاطر اون همه فاصله زیاد نمیشه؟ من که تا الان هر چی نوشتم با Tab بوده حرف اینم قبول نمیکنم مگر یه دلیل و مدرک منطقی داشته باشه.

این چیزی که گفته:


Code MUST use 4 spaces for indenting, not tabs.

fatima-php
شنبه 23 خرداد 1394, 10:42 صبح
چون توی برخی ادیتورها Tab رو همون Tab نشون میده (یعنی 8 تا فاصله میزنه) و باعث میشه سورس کد خیلی باز دیده بشه. شما وقتی سورس کدتون رو میخواین اجرا کنید، مفسر PHP تمام فاصله های اضافه و Enter و کامنتها و... رو حذف میکنه و نسخه Minify شده رو اجرا میکنه. پس فرقی نمیکنه صدتا Space بزنید یا یه Tab. به خوانایی کدهاتون اهمیت بیشتری بدین.

Veteran
شنبه 23 خرداد 1394, 10:50 صبح
حق با فاطیما خانمه،توی فاز پشتیبانی خیلی کمک میکنه،تب ها،استفاده از PHP_EOL، اسامی معنا دار و کامل،چون کد رو توصیف میکنه متغیر،و اگر صد خط بیای پایین نمیگی این result$ چی بود ؟! اسمشو میبینی،میفهمی.
به هرحال برنامه نویسی جزییات زیادی داره،ولی توی ایران خیلیا فقط در حد CRUD میبینند این شغل رو و استاندارد کد نمیزنند.

hsgpro
شنبه 23 خرداد 1394, 11:05 صبح
چون توی برخی ادیتورها Tab رو همون Tab نشون میده (یعنی 8 تا فاصله میزنه) و باعث میشه سورس کد خیلی باز دیده بشه. شما وقتی سورس کدتون رو میخواین اجرا کنید، مفسر PHP تمام فاصله های اضافه و Enter و کامنتها و... رو حذف میکنه و نسخه Minify شده رو اجرا میکنه. پس فرقی نمیکنه صدتا Space بزنید یا یه Tab. به خوانایی کدهاتون اهمیت بیشتری بدین.


می دونم مفسر همه کاراکتر های اضافی رو حذف میکنه اما سوال من اینه چرا این سایت به جای Tab گذاشتن که کار معمول اکثر برنامه نویس ها هست میگه بشینید سه ساعت دونه دونه 4 تا 4 تا Space بزنید؟ بعد همه ویرایشگر ها هم این ضعف که به جای Tab هشت تا فاصله بزنن رو ندارن پس نمیشه گفت Tab بدتره.

hamedarian2009
شنبه 23 خرداد 1394, 11:25 صبح
می دونم مفسر همه کاراکتر های اضافی رو حذف میکنه اما سوال من اینه چرا این سایت به جای Tab گذاشتن که کار معمول اکثر برنامه نویس ها هست میگه بشینید سه ساعت دونه دونه 4 تا 4 تا Space بزنید؟ بعد همه ویرایشگر ها هم این ضعف که به جای Tab هشت تا فاصله بزنن رو ندارن پس نمیشه گفت Tab بدتره.
من که همون Tab رو میزنم و فکرنمیکنم زیاد فرقی بکنه حالا مثلا روش نامگزاری camelCase با snake_case فرق داره و مشخصه اما فاصله زیاد نشون نمیده

fatima-php
شنبه 23 خرداد 1394, 11:31 صبح
می دونم مفسر همه کاراکتر های اضافی رو حذف میکنه اما سوال من اینه چرا این سایت به جای Tab گذاشتن که کار معمول اکثر برنامه نویس ها هست میگه بشینید سه ساعت دونه دونه 4 تا 4 تا Space بزنید؟ بعد همه ویرایشگر ها هم این ضعف که به جای Tab هشت تا فاصله بزنن رو ندارن پس نمیشه گفت Tab بدتره.

حالا کی گفت خودتون دستی فاصله بزنید؟ اکثر IDE ها این قابلیت رو دارن که بجای Tab از Space استفاده کنن. یعنی شما Tab میزنید ولی اونها 4 تا Space (یا هر چندتا که تنظیم کنید) میزنن. توی تنظیمات Editor برنامه IDE خودتون میتونید پیداش کنید. نخواستین هم آخر کار میتونید با یه Replace ساده هرچی Tab هست پیدا کنید و بجاش 4 تا Space بگذارین.

hsgpro
شنبه 23 خرداد 1394, 11:46 صبح
حالا کی گفت خودتون دستی فاصله بزنید؟ اکثر IDE ها این قابلیت رو دارن که بجای Tab از Space استفاده کنن. یعنی شما Tab میزنید ولی اونها 4 تا Space (یا هر چندتا که تنظیم کنید) میزنن. توی تنظیمات Editor برنامه IDE خودتون میتونید پیداش کنید. نخواستین هم آخر کار میتونید با یه Replace ساده هرچی Tab هست پیدا کنید و بجاش 4 تا Space بگذارین.

خب مزیت این کار چیه؟ در این لینک http://www.php-fig.org/psr/psr-2/ درباره مزیتش اینو گفته:


N.b.: Using only spaces, and not mixing spaces with tabs, helps to avoid problems with diffs, patches, history, and annotations. The use of spaces also makes it easy to insert fine-grained sub-indentation for inter-line alignment.

اما من زیاد انگلیسیم خوب نیست متوجه نمیشم چی میگه.
یکی اینو ترجمه کنه بفهمیم واقعاً مزیت 4 تا فاصله نسبت به Tab چیه.

fatima-php
شنبه 23 خرداد 1394, 13:51 عصر
داره میگه استفاده کردن تنها از Space و ترکیب نکردن اون با Tab باعث میشه که از مشکلاتی که توی تشخیص تفاوتهای کدها (با ابزارهایی مثل WinMerge و...)، رفع اشکالات، تاریخچه تغییرات کدها و یادداشت گذاریها ممکنه بوجود بیاد، جلوگیری کنید. کاربرد فاصله به تنهایی باعث میشه که بتونید به راحتی از تورفتگی های فرعی برای خطوطی که وسطشون شکستگی وجود داره یا تراز کردن قسمتهای داخلی (مثل عناصر آرایه ها وقتی عمودی مینویسین) استفاده کنید.

fatima-php
شنبه 23 خرداد 1394, 14:14 عصر
بیشترین چیزی که از رعایت کردن قوانین PSR گیرتون میاد، سازگاری کد شما و عادت کردنتون به سینتکسی هست که اکثر برنامه نویسان دنیا قبول دارن و توی کدهاشون رعایت میکنن. این موضوع هم توی کار تیمی بدرد میخوره و هم وقتی سورس یکی دیگه رو از اینترنت گرفتین و میخواین ازش سر در بیارین، بهتون کمک میکنه

H:Shojaei
شنبه 23 خرداد 1394, 15:03 عصر
نام گذاری یک مسئله خیلی مهمه برای خوانایی برنامه و اولین قدم هم هست که بخواید یک کد تروتمیز بزنید و بحث این تاپیک هم همین مسئله هست...
ولی گاهی مثل همیجا میبینیم که نظرات متفاوته و همه یک قانون رو هرچند بهتر و راحتتر نمیپذیرن و کاری که قبلا میکردن باهاش راحت تر بودن رو ادامه میدن واسه همینه که مهمتر از نامگذاری مسئله مستند سازی میشه...
بعد از نامگذاری خوانا مهمترین مسئله مستند سازی پروژه هست شما با هر روشی که میخواید کد بزنید (البته نه دیگه همچین که تو آفتاب بذاری راه بره!!!!) و اونو مستند سازیش کنید هرکسی هم که بخونه مستندات رو از کلیات کار سردر میاره و با جزئیاتی که طی کدها میذارید هم از جزئیات کار سردر میاره...
من واسه نام گذاری هام از همون روشی که fatima-php گفتن یعنی اسامی مفهومی (البته هنوز به استانداردی واسه این موضوع نرسیدم ولی به نظر خودم مفهومی هستن به اندازه کافی) واسه خوانایی نامگذاری ها از روش camelCase استفاده میکنم و همچنین مستند سازی کدهام رو هم بین خطوط همون جایی که مینویسم قرار میدم و از آخرین پروژه ای هم که نوشتم از این بابت ها تا حدودی راضی ام چون خودم که تو یک صفحه 1000 خط کد که دنبال چیز خواصی میگردم هرچقدر هم که از آخرین ویرایشش گذشته باشه اولا که با اسکرول به راحتی پیدا میشه چون من همیشه به ترتیبی که صفحه ظاهرش هست کدها رو هم به همون ترتیب مینویسم مثلا هدر هرچی داره همون اول نوشته میشه تو تمام فایلها بعد منو بعد بدنه و... و اگر کد مربوطه کوچیک باشه و نشه با اسکرول با جستجوی کامتهای اون بخش اسمی چیزی که منحصر به فرد باشه و یادم بیاد رو میسرچم و به راحتی پیداش میکنم...
چقدر هم خوبه که تمام توابع کدها متغیر ها کلا تمام اسامی رو تو یه جدول بیاریم و یه توضیح حتی چند کلمه ای هنگامی که میسازیمشون واسشون بذاریم حالا شما 2 سال دیگه بیا اسم تو جدول جستجو کن زندگینامشو تجویل بگیر!

godofphp
یک شنبه 24 خرداد 1394, 22:26 عصر
ممنون از همه دوستان گرامی