-
بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سلام
احتمالا در اعلانات سایت دیده باشید که اولین سری گفتگوی فنی سایت شروع به کار کرد.
تاپیک اصلی مربوط به سوال و جواب بوده و فقط مجری و مهمانان در اون شرکت دارند. دیگر کاربران سایت برای مشارکت در بحث (گفتگو در مورد سوال و جواب ها ، انتقاد یا پیشنهاد در مورد بحث جاری ، پیشنهاد سوال به مجری برای پرسیدن از مهمانان و ...) از این تاپیک استفاده کنند.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
ایده خوبیه
منتها چون گفتگوها زنده است باید مثه سیستم های chatting پیاده سازی بشه
فکر کنم تو vBulletin این کار با Ajax به راحتی امکان پذیر باشه .
این جوری ما مجبوریم مدام صفحه رو بارگذاری کنیم .
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
یعنی زحمت یه refresh رو هم نمیکشید ؟
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
اجازه بدید فعلا با روند فعلی بریم جلو. بعدا با توجه به میزان استقبال و درصد پیشرفت ، می تونیم روی خیلی ایده های دیگری (از جمله سیستم چت آنلاین ، انتشار پادکست یا حتی ویدئو) فکر کنیم. منتها فعلا شما به دید یه سیستم آزمایشی نگاه کنید که قبلا در این سایت سابقه نداشته و ما برای اولین بار داریم همچین طرحی رو اجرا می کنیم. در ضمن فعلا گفتگو ها کاملا real time نیست
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
به نظر من طرح خیلی خوبیه ،امیدوارم ادامه پیدا کنه
یکی از دوستانم که زحمت کشیدن و پا برهنه پریدن وسط تاپیک با اینکه گفته شده بود اونجا پست نزارند! :اشتباه:
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سوالم در زمینه فناور برنامه نویسی موبایل هستش در.NET , Framwork . اگه از موضوع بحثتان دورم پس ffoadn ...ولی اگر مختصر میتونید راهنمایی کنید ..
چوی اینروزها خیلی فکرم رو مشغول کرده آیا این فناوری در Framwork پیشرفتی داشته و چگونه است یگویید تا من سراغ ان برم ,... البته من بی اطلاع هستم .
بهمین خاطر مجیور شده که سراغ جاوا و NetBeans برم که زیاد موفقیت آمیز نبود البته سری به تایپیکها جاوا و مشابه این پستها زدم ولی پاسخس نگرفتم .
البته من هم مثل دوست خوبمون از این طریق گفتگو زیاد راضی نیستم ولی بازم خدا را شکر که امثال شما به فکر ما هستید و همی هم غنیمت می دانم ...
نمی دونم چرا کسی نیست یا نه جواب نمی دن ... اینطوری جواب نمی ده بدرد نمی خوره ببخشید رک می گم
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
با تشکر از حرکت خوبتان! به شدت منتظر real time شدن بحث هستم! چون بحث داغ می مونه و جذاب
قضاوت هم در مورد بحثی که تا به حال شده زوده! فقط امیدوارم بحث به سمت هر چه فنی تر شدن پیش برود و از گفتن بدیهیات پرهیز شود. مثلا
"برای برنامه نویس(کد نویس) خوب شدن نیاز به تجربه هست!" خب! معلومه که هست!
یه سوال : آیا محوریت مباحث روی ابزارهای مایکروسافتی هست؟ (یعنی اگر نیاز به ابزار در گفتگوها شد ، از پلتفرم مایکروسافتی استفاده میشود؟)
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
یه سوال : آیا محوریت مباحث روی ابزارهای مایکروسافتی هست؟ (یعنی اگر نیاز به ابزار در گفتگوها شد ، از پلتفرم مایکروسافتی استفاده میشود؟)
نه لزوما. فعلا به دلیل نداشتن تالار مرتبط به این موضوع ها و نیز بیشتر بودن تعداد برنامه نویسان محصولات مایکروسافت ، بحث رو در این تالار راه انداختیم (سعی بر این هست که در استفاده از ابزار طوری عمل کنیم که طیف وسیعی از برنامه نویسا بتونن از مبحث استفاده کنن)
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سلام
پیشهاد میکنم این گفتگو ها بالای تمام تاپیکهای مرتبط اضافه بشه تا همه در جریان قرار بگیرند
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سلام
میشه لینک دانلود کتاب Beautiful Code رو بزارین.
ممنون
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
چنین لینکی توی سایت قرار نمی گیره(قوانین سایت) : پ.خ بده لینکشو بدم
کتاب های شاهکار دیگه
Pragmatic Programmer, The: From Journeyman to Master
Code Complete By Steve McConnell
و کتاب های اقای Joel Spolsky
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
در پيام خصوصي هم به آقاي اصغري گفتم ،
به نظر ميرسه آقاي مداح مشغله زيادي داشته باشند و خيلي دير جواب ميدن .
اگه بشه ، كه تعداد ميهمانان را بيشتر كنيد ، تا تاپيك از حالت ركود خارج بشه بسيار موثرتر خواهد بود .
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
طرح بسیار بسیار عالی و مفیدی است.
لطفا این کار رو ادامه بدید.
من فکرمی کنم این کار تاثیر زیادی در بالا بردن سطح سایت داشته باشه.
من که لینک بحث رو برای همه ی دوستانمم ایمیل کردم تا اونها هم بیان و استفاده کنند.(دوستانم عضو برنامه نویس نیستند)
از همه ی دوستان متشکرم.
ممنون
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سلام،
یک سؤالی که برای من پیش آمده این هست که اگر همیشه کدهای تمیز بنویسیم، اگر همیشه کدهای خوانا بنویسیم، اگر همیشه اصول و قواعد نامگذاری شناسه ها رو رعایت کنیم؛ تا جایی که به قول آقای مداح ذهن برای این شیوه کدنویسی تربیت بشه، اونوقت چطور میتونیم سر از یک کد کثیف در بیاریم؟
حتماً تاحالا مجبور بودید که نحوه عملکرد کدی رو بررسی کنید، اگر این کد از نظر شما که ذهنتون کد کثیف رو نمی پذیره، کثیف باشه چه راهکاری برای بررسی اون کد پیشنهاد می کنید؟ برای خود من بارها این موضوع پیش آمده و تا زمانی که حداقل ملزومات یک کد خوانا رو روی اون کد اعمال نکنم نمی تونم حتی یک خط از دستورات رو درک کنم. شما برای فهم کدهای بو دار:چشمک: چه کار می کنید که زمان زیادی براش تلف نشه. البته با فرض اینکه شما اجازه حذف کل کدها رو به منظور بازنویسی ندارید.
سؤال دوم من در مورد متغیر شمارنده در حلقه ها هست. آقای موسوی از انتخاب نام هایی مثل i و j و k و ... به عنوان ویژگی های یک کد کثیف یاد کردند (البته به نقل از یک کتاب). اگر اینطور هست، پس اصلاً چطور شد که i و j و ... برای همه برنامه نویسان همیشه یادآور متغیر شمارنده هست و چرا اینقدر شیوع پیدا کرده؟
متشکرم/
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
یک سوال داشتم که امیداورم دوستان شرکت کننده در بحث پاسخ بدهند.
فکر نمی کنید نوشتن کد به روشی که شما می فرمایید کمی سخت و خسته کننده باشه؟
مثلا در حلقه ی for به جای استفاده از i,j,k از متغیر های ColomNum,RowNom ئ امثال اینها که خیلی طولانی هستند استفاده کنیم!
آیا این روش سخت تر نیست؟
آیا شما به عنوان یک برنامه نویس با تجربه می تونید بگید که بعد از مدتی به این سختی عادت میکنیم؟
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
به نظر من خیلی از گفته های مطرح شده در عمل نادیده گرفته میشن البته هرکسی برای خودش قواعد کاری داری
من خیلی کم توی حلقه ها از i و j استفاده میکنم ولی صرفا نباید استفاده کرد رو نمیشه قبول کرد.
این رو توی همه ی زمینه ها تجربه کردم چه کد نویسی چه طراحی چه نقشه کشی و چه نقشه برداری و خیلی چیزهای دیگه همیشه تئوری به ایده آل ها میپردازه ولی در عمل خیلی از این ایده آل ها زیر پا گذاشته میشن.
هر چیزی بستگی به موقعیت داره و اینکه چطور میخوای کار کنی و هیچ چیز قاطعیت صد در صد نداره من توی صحبتهای اساتید مهمان تا الان نکته جدیدی ندیدم ولی خوشم میاد بالاخره استارتی زده شد.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
با سلام و تشکر
منظور شما اینه که استفاده از region خوب نیست؟
من فکر میکردم که کمک زیادی به خوانایی کد و مرتب بودنش میکنه.
یعنی سعس کنیم ازش استفاده نکنیم؟
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
el_abdollahi
با سلام و تشکر
منظور شما اینه که استفاده از region خوب نیست؟
من فکر میکردم که کمک زیادی به خوانایی کد و مرتب بودنش میکنه.
یعنی سعس کنیم ازش استفاده نکنیم؟
نه اينكه خوب نيست ، نبايد استفاده از اون باعث بشه كدهاي بودار بنويسين و مخفيش كنين
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سلام...
جناب مداح، مهدی عسگری و موسوی خسته نباشید....
چون دیدم میخواهید بحث Refactoring رو تموم کنید میخواستم پیشنهاد بدم در مورد تکنیک های Refactoring نظیر Extract Methods, Extract Interface و ... هم کمی به طور اجمالی توضیحی بدید...
با تشکر/
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
به نظرم جالب بود ،
Naming Conventions for .NET / C# Projects
شما هم نگاهي بيندازيد .
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
Lastphoenix
بعضی چیزهاش منسوخ شده.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
دوست عزیز جناب اقای اقا مهدی عسگری به نظر من اگر تا جایی که امکان داره جلو بحث ها گرفته نشه بهتر هست احساس کردم توی بحث فعلی اساتید حرف های زیادی برای گفتن دارن اما بعضا تصمیم گرفته میشه که بحث عوض بشه که این درست نیست
به نظرم اجازه بدین بحث پیش بره تا وقتی که حرف ها ادامه داره جلو اون گرفته نشه خطری که این گفتگوها رو تهدید میکنه
"خفه کردن یا خفه شدن گفتگو در نطفه هست"
و یکی در مورد حرف هایی که اینجا زده میشه و بعضا مربوط هست به سلیقه افراد نه حرف علمی قابل اتکا تا انجایی که امکان دارد این نوع حرف ها رو داخل گفتگو ها تزریق نکنید چراکه "جدل سلیقه ای" رو عملا خواه نا خواه به گفتگو ها منتقل کرده ایم
و یک گفتگو مستدل و تمیز رو الوده کرده ایم
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
اتفاقا من هم با شما موافقم ولی نمی دونم منظورتون آیا پست خاصی هست؟
من سعی می کنم از هر مبحثی یه نتیجۀ خوبی گرفته بشه و بعد بریم سراغ مبحث بعدی. از طرفی هم نمی خوام مدت های مدید سر یک بحث خاص بمونیم. در ضمن اینجا سه نفری با هم تصمیم می گیریم.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
به نظرم اجازه بدین بحث پیش بره تا وقتی که حرف ها ادامه داره جلو اون گرفته نشه خطری که این گفتگوها رو تهدید میکنه
"خفه کردن یا خفه شدن گفتگو در نطفه هست"
اینطور نیست؛ چون مهمانان بحث با مجری برنامه دائما در ارتباط هستند، و نظرات خودشان را با هم رد و بدل می کنند، تا در حین بحث چیزی از قلم نیافته، و بحث به از مسیر منحرف نشه. اینطوری نیست که مجری همینطوری از یک شاخه به شاخه ایی بپره، و مثلا مهمانان را غافلگیر کنه. این بحث ها فقط بهانه ایی هستند برای انتقال دانش صحیح درباره موضوعات خاص به کاربران.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
Mehdi Asgari
اتفاقا من هم با شما موافقم ولی نمی دونم منظورتون آیا پست خاصی هست؟
من سعی می کنم از هر مبحثی یه نتیجۀ خوبی گرفته بشه و بعد بریم سراغ مبحث بعدی. از طرفی هم نمی خوام مدت های مدید سر یک بحث خاص بمونیم. در ضمن اینجا سه نفری با هم تصمیم می گیریم.
منظورم
نقل قول:
من یک مبحث هم مد نظرم هست برای این گفتگو: مستند سازی کد
منتها قبل از ورود به این مبحث ، شما اگه حرفی در ادامۀ مبحث نام گذاری و کد اصولی و Refactoring دارید ، بگید تا اون مبحث رو تموم کرده و سراغ بحث جدید بریم.
به ذهن میاد کمی تعجیل وجود داره
منظور من از عدم تزریق یعضی از گفتگو ها گفتگوهای مربوط به تاپیک "دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی) " هست
و در ضمن به اجرای خوب شما و گفتگو های مستدل دوستان عزیز اقایان مداح و موسوی تبریک میگویم
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
با سلام خدمت همه ی دوستان
از زحمتی که کشیدید بسیار ممنون امیدوارم بحث ادامه دار باشه
دوستان و اساتید گرامی آیا امکانش هست در مورد تحلیل یک سیستم قبل از شروع برنامه نویسی و روشهای مدلینگ سیستم ، چگونگی تحلیل یک سیستم و استفاده از UML و RUP و گامهایی که قبل از شروع برنامه نویسی باید به آنها پرداخته بشه در آینده صحبت کنید؟
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
یک پیشنهاد داشتم
اگه امکانش هست این بحث ها رو دسته بندی کنید وبه عنوان یک مقاله در اختیار اعضا قرار بدین
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
بحث ها که جلو تر رفت امکان چاپ کتابی تحت همین عنوان هم وجود داره
کتابی خاص که بی شک به زبان فارسی تا به حال نوشته نشده است
چاپ همچین کتاب و حمایت از ان تا حدی میتونه زحمات دوستان دست اندر کار رو جبران کند
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
برادر مهدی موسوی بنده در حال حاضر همچنان دارم یه بوی بدی احساس می کنم.
در مثال ماشینی که زدید، باید متدهای Start و Brake رو Virtual تعریف کنید اما این کار رو نکردید.
موفق باشید.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
با سلام به دوستان
گفتگوی فنی ایده خوب وجالبیه.من که خیلی استفاده کردم.
خسته نباشید و متشکرم
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
Behrouz_Rad
برادر مهدی موسوی بنده در حال حاضر همچنان دارم یه بوی بدی احساس می کنم.
در مثال ماشینی که زدید، باید متدهای Start و Brake رو Virtual تعریف کنید اما این کار رو نکردید.
موفق باشید.
میشه لطف کنید دلیلشم بفرمایید ما تازه کارام بهره ببریم؟
ممنون
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
ricky22
میشه لطف کنید دلیلشم بفرمایید ما تازه کارام بهره ببریم؟
ممنون
البته بنده تماشاچی هستم ولی اگر دوربین روی من بیاد دلایلم رو عرض می کنم :چشمک:
در متد Brake کلاس Car دستور چاپ عبارت Car Call و در متد Brake کلاس Porsche دستور چاپ عبارت Porsche Call رو بنویس و به شکل ذیل فراخوانی کن:
public void test(Car c)
{
c.Brake();
}
Car car = new Car();
Porsche porsche = new Porsche();
test(car);
test(porsche);
در هر دو حالت میبینی که عبارت Car Call در خروجی ظاهر میشه که این صحیح نیست. حال متد Brake کلاس Car رو Virtual و متد Brake کلاس Porsche رو override تعریف کن.. در این حالت، دستورات فوق موجب میشن که عبارت مخصوص همان متد در خروجی چاپ بشه که این صحیح هست.
موفق باشید.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
البته بنده تماشاچی هستم ولی اگر دوربین روی من بیاد دلایلم رو عرض می کنم :چشمک:
اگر یک صندلی هم اضافه میکردین که جناب بهروز از جایگاه تماشاچیان بیاد و کنار خودتون بشینه
بد نبود :چشمک:
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
به نظر من بهتره يه مقدار هم در مورد Prefix هاي كلاس و توابع صبحت كنيد.
مثلا كلاسي كه با Abstract تعريف شده با كلاسي كه Virtual تعريف شده چه تفاوتهايي داره. overrides چي هست و چه كابردهايي داره ...
sealed , static , ...
اينها رو من چندسال پيش يه چيزهايي در موردشون خوندنم و در كتابها هم توضيح مختصري داده بودند ولي واقعيتش تفهيم نشد.
تازه الان كه بعد از 4 5 سال دارم برنامه نويسي ميكنم مفهومشون رو نيمه نصفه درك ميكنم.
تازه كارها كه ديگه جاي خود دارند.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
salehbagheri
به نظر من بهتره يه مقدار هم در مورد Prefix هاي كلاس و توابع صبحت كنيد.
مثلا كلاسي كه با Abstract تعريف شده با كلاسي كه Virtual تعريف شده چه تفاوتهايي داره. overrides چي هست و چه كابردهايي داره ...
sealed , static , ...
اينها رو من چندسال پيش يه چيزهايي در موردشون خوندنم و در كتابها هم توضيح مختصري داده بودند ولي واقعيتش تفهيم نشد.
تازه الان كه بعد از 4 5 سال دارم برنامه نويسي ميكنم مفهومشون رو نيمه نصفه درك ميكنم.
تازه كارها كه ديگه جاي خود دارند.
البته پرواضح است كه كلمات كليدي Abstract ، Virtual و ... Perfix نيستند .
من با برادر salehbagheri موافقم ، تا حالا چندين مرتبه در مورد اونها خوندم ، ولي هنوز مفهوم رو كامل درك نكردم. شايد علت نبودن نياز بوده ، يعني تا اون ضرورت نياز رو احساس نكني ، اون مفاهيم رو هم نميتونيم درك كنيم .
ولي تصور ميكنم اون هم يك تاپيك جداگانه و مختص خودشو ميخواد ، كه اميدوارم مديريت در موردش فكر كنه و اون رو يكي از گزينه هاي بعدي "گفتگوهاي فني" قرار بده .
به عنوان نمونه ، من با اينكه تفاوت متدهاي Static و Instance Methods رو ميدونم ،ولي هنوز در محل استفاده اونها مشكل دارم .
تمام متدهاي كلاس Utility من از نوع Static هستند ، آيا بايد غير از اين باشه ؟
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
دوستان ، من مطلبی رو شفاف کنم
برای شمارۀ اول گفتگوی فنی (که الان در حال ضبط و نیز روی آنتنه) فقط بر روی تشخیص و تولید کد خوب بحث می کنیم (و سعی بر این است که مستقل از زبان و پلتفرم بحث کنیم)
بحث های فنی تر (مثل بحث شی گرایی) رو قصد داریم در آینده در گفتگوهای بعدی مطرح کنیم
(لطفا فعلا بحث معطوف باشه بر چگونگی نوشتن کد خوب. جزییات فنی رو لطفا مطرح نکنید)
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سلام
واقعا از بحث لذت بردم توی این 20 سال بخش زیادی ار موضوعات را از نزدیک لمس کرده بودم ولی بصورت متمرکز ندیده بودم از یک بخش خیلی دلخور شدم و آن موضوع i , j , k است این روش نامگذاری یک استاندارد توفیق اجباری شده است و این موضوع از نامگذاری متغیرهای صحیح در زبان فرترن 77 به ارث رسیده و ظاهرا همه این روش را پذیرفته اند (یک توافق جمعی کاری به غلط و درست ندارم) پس لازم بود به این موضوع اشاره می شد ولی با همه اوصاف انصافا شرکت کنندگان باتجربه و مسلط هستند معلوم است خاک برنامه نویسی خورده اند.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
لطفا يكي به من بگه ، در مثال آقاي موسوي ، اگر از Car از ICar ارث بري نميكرد ، چه اتفاقي ميافتاد ؟
در اين مثال چه ضرورتي داشت كه يك اينترفيس داشته باشيم ؟
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
(لطفا فعلا بحث معطوف باشه بر چگونگی نوشتن کد خوب. جزییات فنی رو لطفا مطرح نکنید)
وقتي يك بنده خدا محتواي كد رو نميفهمه از كجا تشخيص بده خوبه يا بد؟ اگه مخاطبان شما افراد حرفه اي هستند كه هيچ! اگه افراد مبتدي رو مخاطب قرار ميديد بايد همه چيز رو مد نظر داشته باشيد! پس در مثالهاتون از شبه كد استفاده كنيد تا دركش بهتر تر بشه ...
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
Lastphoenix
لطفا يكي به من بگه ، در مثال آقاي موسوي ، اگر از Car از ICar ارث بري نميكرد ، چه اتفاقي ميافتاد ؟
در اين مثال چه ضرورتي داشت كه يك اينترفيس داشته باشيم ؟
آقای کارگردان لطفاً مجددا دوربین رو این سمت بیارید... آها مرسی ممنون :)
شما همیشه در بالاترین سطح از موجودیت های مربوط به هم کلاسی داری که بهش میگن کلاس "انتزاعی"... در این کلاس مجموعه ای از خصیصه ها و رفتارهای عمومی اشیا رو گرد هم میاری. به عنوان مثال: تمامی ماشین ها رنگ دارند، تمامی ماشین ها توسط یک شرکت تولید شدند، تمامی ماشین ها می تونن ترمز بگیرن و تمامی ماشین ها می تونن شروع حرکت داشته باشن.
پس دو خصیصه ی "رنگ" و "مالک" و رفتارهای "ترمز" و "شروع حرکت" می تونن برای همه ی ماشین های دنیا وجود داشته باشن. اینها "انتزاعی" برای ماشین هاست که در بالاترین سطح قرار میدی.
بنده اگر جای برادر موسوی بودم، اسم interface رو ICar نمیگذاشتم. به نظر من نام IMobility بهتر هست.. یعنی هر چیزی که حرکت می کنه. منظور این نیست که مثلاً یک "مگس" هم توسط یک شرکت تولید میشه، منظور این هست که از واژه ای کلی تر استفاده بشه و پیش خود اینطور در نظر بگیری که منظور از IMobility یعنی "تمامی وسایل نقلیه ی قابل حرکت".
"تمامی وسایل نقلیه ی قابل حرکت" دو خصیصه ی "رنگ" و "مالک" و رفتارهای "ترمز" و "شروع حرکت" رو دارن... پس ICar محدود کننده است. حداقل در ذهن.
و اما... interface یک قالب کلی از خصیصه ها و رفتارهای خامی ایجاد می کنه که بعداً توسط کلاس هایی که اون رو پیاده سازی می کنن تغییر می کنه... من به interface ها میگم "یاد آور".
بعداً اگر قرار بر این بود که کلاسی برای دوچرخه یا موتورسیلکت داشته باشم، کلاسی با نام Bike ایجاد می کنم و اجزای IMobility رو برای اون پیاده سازی می کنم...
این طوری بسیار زیباتر خواهد بود...
در حقیقت interface بهت "یادآوری" می کنه که: "پسرم وسیله ی نقلیه ی تو حتما باید حداقل دو خصیصه ی "رنگ" و "مالک" و رفتارهای "ترمز" و "شروع حرکت" رو داشته باشه تا بتونی یک وسیله ی نقلیه حسابش کنی"
لطفاً جمله ی بالا رو 100 بار با دقت بخون ;)
موفق باشید :لبخندساده:
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
salehbagheri
وقتي يك بنده خدا محتواي كد رو نميفهمه از كجا تشخيص بده خوبه يا بد؟ اگه مخاطبان شما افراد حرفه اي هستند كه هيچ! اگه افراد مبتدي رو مخاطب قرار ميديد بايد همه چيز رو مد نظر داشته باشيد! پس در مثالهاتون از شبه كد استفاده كنيد تا دركش بهتر تر بشه ...
قطعا به نظر من باید برنامه نویسان سطح بالاتر مخاطب این گفتگو ها باشند مگر نه گفتگو های سطح پایین رو ادم های دیگه هم میتونن انجام بدن
هدف ایجاد یک سری گفتگو برای روجوع همیشگی به ان برای کسانی که شغلشان برنامه نویسی هست باید باشد
حرف های ساده تر را در تاپیک های ساده تر هم میتوان زد
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
بحثهاي بي ارتباط رو كجا بايد پست كرد؟
ميخواستم بگم كه اگه اين گفتگوهاي ارزشمند جاي پايي در مجله برنامه نويس داشته باشند فوق العاده ميشه...
حيف هست كه اين مطالب رو به صورت آفلاين نداشته باشيم.
آفلاين كمه بايد اين مطالب رو رو سنگ نوشت ...
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
با سلام
جناب مداح در صورت امکان طریق تست کردن کد ها (Unit Test) را در برنامه نویسی با ASP.NET MVC را توضیح دهید
با تشکر
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
Behrouz_Rad
آقای کارگردان لطفاً مجددا دوربین رو این سمت بیارید... آها مرسی ممنون :)
شما همیشه در بالاترین سطح از موجودیت های مربوط به هم کلاسی داری که بهش میگن کلاس "انتزاعی"... در این کلاس مجموعه ای از خصیصه ها و رفتارهای عمومی اشیا رو گرد هم میاری. به عنوان مثال: تمامی ماشین ها رنگ دارند، تمامی ماشین ها توسط یک شرکت تولید شدند، تمامی ماشین ها می تونن ترمز بگیرن و تمامی ماشین ها می تونن شروع حرکت داشته باشن.
پس دو خصیصه ی "رنگ" و "مالک" و رفتارهای "ترمز" و "شروع حرکت" می تونن برای همه ی ماشین های دنیا وجود داشته باشن. اینها "انتزاعی" برای ماشین هاست که در بالاترین سطح قرار میدی.
بنده اگر جای برادر موسوی بودم، اسم interface رو ICar نمیگذاشتم. به نظر من نام IMobility بهتر هست.. یعنی هر چیزی که حرکت می کنه. منظور این نیست که مثلاً یک "مگس" هم توسط یک شرکت تولید میشه، منظور این هست که از واژه ای کلی تر استفاده بشه و پیش خود اینطور در نظر بگیری که منظور از IMobility یعنی "تمامی وسایل نقلیه ی قابل حرکت".
"تمامی وسایل نقلیه ی قابل حرکت" دو خصیصه ی "رنگ" و "مالک" و رفتارهای "ترمز" و "شروع حرکت" رو دارن... پس ICar محدود کننده است. حداقل در ذهن.
و اما... interface یک قالب کلی از خصیصه ها و رفتارهای خامی ایجاد می کنه که بعداً توسط کلاس هایی که اون رو پیاده سازی می کنن تغییر می کنه... من به interface ها میگم "یاد آور".
بعداً اگر قرار بر این بود که کلاسی برای دوچرخه یا موتورسیلکت داشته باشم، کلاسی با نام Bike ایجاد می کنم و اجزای IMobility رو برای اون پیاده سازی می کنم...
این طوری بسیار زیباتر خواهد بود...
در حقیقت interface بهت "یادآوری" می کنه که: "پسرم وسیله ی نقلیه ی تو حتما باید حداقل دو خصیصه ی "رنگ" و "مالک" و رفتارهای "ترمز" و "شروع حرکت" رو داشته باشه تا بتونی یک وسیله ی نقلیه حسابش کنی"
لطفاً جمله ی بالا رو 100 بار با دقت بخون ;)
موفق باشید :لبخندساده:
جمله آخر بسيار زيبا بود ، اگر جسارت بنده را بپذيريد چند مطلبي را اضافه مي كنم
يكي از كاربردهاي inteface وراثت چند گانه است ، آيا تا به حال به اين مورد برخورد كرده ايد كه يك كلاس چگونه مي تواند از دو كلاس بطور همزمان ارث ببرد .در اينجا برخي از خصوصيات inteface , و كلاس abstract را بطور خلاصه بيان مي كنم ، به نظرم در اين مورد تايپيك جدا گانه اي لازم داره
خصوصيات اينترفيس
1-كاربرد در بحث وراثت چندگانه
2-اينترفيس نمي تواند عملي را انجام دهد و صرفا يك چارچوب و قاعده براي كلاسها تعريف مي كند
3-سطح دسترسي توابع و متدهاي آن تابع سطح دسترسي خود اينترفيس است
اما كلاس abstract
1-فقط مي تواند يك كلاس آن را به ارث ببرد
2-توابع و متدهاي آن مي توانند عملياتي را انجام دهند
3-توابع و متدهاي آن مي توانند سطح دسترسي داشته باشند
و .........
اما در بحث كد نويسي به نظر من داشتن يك ديكشنري براي متغيرها بسيار ضروري است ، مثلا ممكن است در چند جا شما متغيري همنام استفاده كنيد كه باعث گيجي مي شود
به نظر من قبل از آغاز كار يك قاعده براي نام گذاري قرار دهيم و هر متغيري را در ديكشنري ذخيره كنيم به اين ترتيب كه اين متغير يا كلاس و يا تابع و متد در كجا بكار رفته و چه كارهايي را انجام مي دهد تا به هنگام تعريف تابع يا متغير جديد حداقل از همنام بودن جلوگيري شود
نمي دانم تا چه حد توانستم مطلب را برسانم
با تشكر فراوان از استادان بزرگوار
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
دوست عزیز
طراحی به صورت
Interface >> Common Implementation >> Special Implementation
یکی از روش های خوب طراحیه
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
سلام ،
اول یه پیشنهاد ، برای تشکر در قسمت بحث دربارۀ گفتگوی فنی پاسخ ارسال نکنیم که تعداد صفحات الکی بالا نره و بشه راحت تر مطالب رو دنبال کرد ، از دکمه تشکر استفاده کنیم .
یه درخواست هم از آقایان موسوی ، مداح و عسگری دارم ، اینکه بعضی کلمات خیلی تخصصی هستن ، من که دو سالی هست با .Net حرفه ایی ! کد می زنم ، تو عمرم همچین اصطلاحاتی نشنیدم !!! اگه می شه آخر متن هایی که می نویسید ترجمه که نه ولی معادل فارسی یا اینکه این اصطلاح یعنی چه رو هم بنویسید ، مثل کتاب ها که برای کلمات سختشون * می ذارن ! :افسرده:
ممنون . :قلب::قلب:
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
majidmjh
سلام ،
اول یه پیشنهاد ، برای تشکر در قسمت بحث دربارۀ گفتگوی فنی پاسخ ارسال نکنیم که تعداد صفحات الکی بالا نره و بشه راحت تر مطالب رو دنبال کرد ، از دکمه تشکر استفاده کنیم .
یک چند نفری سهوا اینکار رو کردن که خودشون هم بعد از اینکه متوجه شدند , پاک کردند.
نقل قول:
نوشته شده توسط
majidmjh
یه درخواست هم از آقایان موسوی ، مداح و عسگری دارم ، اینکه بعضی کلمات خیلی تخصصی هستن ، من که دو سالی هست با .Net حرفه ایی ! کد می زنم ، تو عمرم همچین اصطلاحاتی نشنیدم !!! اگه می شه آخر متن هایی که می نویسید ترجمه که نه ولی معادل فارسی یا اینکه این اصطلاح یعنی چه رو هم بنویسید ،
به نظرم که خیلی ساده و روان توضیح میدند , منتها به نظر من فاصله زمانی بین پستها داره زیاد میشه , که از شکل یک تاپیک داغ فاصله میگیره .
شما میتونی هر اصطلاحی رو که متوجه نشدی اینجا مطرح کنی , اصلا این تاپیک واسه همین جور موارد ایجاد شده .
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
در این کد آقای موسوی اومدن GetGrandTotal() از کد اصلی جدا کردن ، این کار باعث شده که foreach دوبار توی تکرار بشه ، درسته که خوانایی برنامه بالاتر رفته و بوی بد کد کمتر شده ولی این باعث کند شدن برنامه نمی شه شاید مجبور بشیم این foreach رو صد بار تو برنامه صدا بزنیم ! اون وقت صد بار می خواد محاسبه کنه
بهتر نیست یه foreach باشه و این تابع ها توی اون تکرار بشه ، توی کد های من این اتفاق خیلی افتاده ... ممنون .
public void PrintInvoice()
{
PrintInvoiceHeader();
decimal grandTotal = GetGrandTotal();
PrintInvoiceDetails(grandTotal);
}
private void PrintInvoiceDetails(decimal grandTotal)
{
//Print invoice items and calculate the grand total...
foreach (Item item in this.items)
{
Console.WriteLine("Id: " + item.Id);
Console.WriteLine("Name: " + item.Name);
}
//Print the grand total
Console.WriteLine("Grand Total: " + grandTotal);
}
private decimal GetGrandTotal()
{
decimal result = 0;
foreach (Item item in this.items)
result += item.Price;
return result;
}
private void PrintInvoiceHeader()
{
//Print invoice header...
Console.WriteLine(this.invoiceId);
Console.WriteLine(this.customerName);
}
ویرایش :
ای کاش تا قبل از اینکه برم سربازی اینو جواب می دادید !! چون برام خیلی مهمه ! من سه شنبه صبح باید برم ... :'(
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
نقل قول:
نوشته شده توسط
Behrouz_Rad
بنده اگر جای برادر موسوی بودم، اسم interface رو ICar نمیگذاشتم. به نظر من نام IMobility بهتر هست.. یعنی هر چیزی که حرکت می کنه. منظور این نیست که مثلاً یک "مگس" هم توسط یک شرکت تولید میشه، منظور این هست که از واژه ای کلی تر استفاده بشه و پیش خود اینطور در نظر بگیری که منظور از IMobility یعنی "تمامی وسایل نقلیه ی قابل حرکت".
با عرض پوزش از آقای راد، ولی همینطوریش وقتی آقا صالح در مورد اصطلاحات ابهام دارن -یا از طرف بقیه صحبت می کنن-، فکر کنم تعمیم مساله حتی در این حد هم درست نباشه؛ صورت مساله Refactoring بود که آقای موسوی تمام تلاششون رو کردن تا با ساده ترین و در عین حال درست ترین زبان بیانش کنند.
البته شما استاد امثال بنده هستید ولی اگه بخواهیم در مورد ماهیت سولوشن صحبت کنیم، فکر کنم حالا حالاها در جا می زنیم :خجالت:؛ مثلاً IMobility هم میتونه IVehicle باشه، اونهم از IObject منشعب بشه و الا ماشا...
"وقتي يك بنده خدا محتواي كد رو نميفهمه از كجا تشخيص بده خوبه يا بد؟ اگه مخاطبان شما افراد حرفه اي هستند كه هيچ! "
آقای باقری، چرا بچه ها رو می ترسونی؟ مگه کدها چه محتوایی دارن که یه برنامه نویس معمولی، متوجه اش نشه؟ فقط اون آخراش آقای موسوی برای اینکه یکم لذت ببرن، یکم سازنده تو سازنده کردن، که هوشمندانه بوده و خوب برحسب تجربه های مکرر و بنظرم بهتره به چشم ما هم بخوره:
" به Class Diagram این کد نگاه کنید و از اون لذت ببرید"
نقل قول:
نوشته شده توسط
majidmjh
اگه می شه آخر متن هایی که می نویسید ترجمه که نه ولی معادل فارسی یا اینکه این اصطلاح یعنی چه رو هم بنویسید ، مثل کتاب ها که برای کلمات سختشون * می ذارن ! :افسرده:
جالب بود.:لبخند:
نقل قول:
نوشته شده توسط
majidmjh
در این کد آقای موسوی اومدن GetGrandTotal() از کد اصلی جدا کردن ، این کار باعث شده که foreach دوبار توی تکرار بشه ، درسته که خوانایی برنامه بالاتر رفته و بوی بد کد کمتر شده ولی این باعث کند شدن برنامه نمی شه شاید مجبور بشیم این foreach رو صد بار تو برنامه صدا بزنیم ! اون وقت صد بار می خواد محاسبه کنه ...
چه فرقی کرده مگه؟ فقط عوض اینکه همه تو یه تابع زیر هم ردیف بشن، به چند تابع شکسته شدند ولی تو ماهیت کار هیچ فرقی نیست! foreach بازاء هربار فراخوانی تابع GetGrandTotal اجرا میشه و داخل متغیر grandTotal ریخته میشه که اونهم فقط یکبار از تابع PrintInvoice فراخوانی میشه. یعنی در اون حالت که شما میگی: عوض اینکه 100 تا foreach زیر هم بنویسی؛ 100 بار متغیری که تابع مقداردهی کرده رو استفاده میکنی، فقط همین تفاوت هست.
مساله Performance که آقای موسوی در موردش صحبت میکنن، خیلی جزئی تر از اینی هست که شما در موردش صحبت میکنید، بیشتر به روال کامپایل توابع بر میگرده تا عملکرد کد و هیچوقت یک تابع معادل کدهای زیرهم، بیشتر از اون کد بو دار اجرا نمیشه. البته چون موضوع بحث اونجا عوض شده به خودم جسارت توضیح دادم، اساتید میبخشن.
-
نقل قول: بحث دربارۀ گفتگوی فنی شماره یک (اصول و قواعد کد نویسی)
فکر کنم آقای موسوی اونقدر به ریز مسائل توجه شون معطوف شد که حوصله شون سر رفت، بابا دیگه اینهمه هم :گیج: نیستیم :
نقل قول:
نوشته شده توسط
mehdi.mousavi
- StyleCop (استایل کاپ تلفظ میشه، متاسفانه برخی اونو استایل کوپ تلفظ میکنن)
- اکنون روی اولین خطا Double-Click کنید تا به رفع اون اقدام کنیم.
- بالای تعریف کلاس، سه بار کلید / رو فشار بدید تا یک Summary Block خالی ایجاد بشه. سپس توضیح مورد نظر رو در درون Tag مزبور بنویسید.
- برای این بخش، ابتدا روی نام پروژه در Solution Explorer کلید سمت راست Mouse رو بزنید و گزینه StyleCop Settings رو انتخاب کنید. سپس، پنجره Company Information رو انتخاب کنید و نام شرکت و Copyright مورد نظر رو اونجا وارد کنید
و ...
خدمت متولیان برنامه گفتگوی فنی شماره یک: ما داریم استفاده می کنیم؛ لطفاً ادامه بدین؛ البته مجری هم که فعلاً برنامه رو تعطیل کردن.:لبخندساده:
من چند تا نکته به ذهنم میرسه:
1) چرا Unit Testing و نیز MVC رو اینقدر خلاصه از روش گذشتید و نظر آقای موسوی رو نپرسیدین، در ضمن مثل اینکه اینا هم مثل مباحث UML هستن، نه؟ یعنی همه درموردشون صحبت میکنن ولی در عمل فقط در سطح همون حرف های قشنگ باقی میمونن! یا فکر کنم من درست توجیه نشدم؛ مثلاً Model، View، Controller و ... رو دیدم و خیلی شبیه UML و DFD و مستندسازی های مراحل هستند که اگه اینطوری باشه، آدم باید تمام پروژه ها رو بخوابونه که از اول همه چیز طراحی بشه؛ واقعاً لازمه که آدم برای آزمایش کد از این روال پیروی کنه؟ بعبارت دیگه همه که برنامه نویس وب یا دیتابیس نیستند و در پروژه های دیگه هم برای Unit Test اِ صحیح، لازمه که از این مباحث استفاده بشه یا روشهای استاندارد و عملی دیگه ای هم هست؟ چون بنده با یک مطالعه کوچک به Event هایی که Delegate ای براشون تعریف نشده و از EventHandler خود دات نت استفاده میکنند یا Singleton Pattern ها و مفاهیم چندریختی و ... توشون استفاده شده که حوصله برنامه نویسان رو شدیداً مورد آزمایش قرار میدن! منظورم اینه که اگه بخواهیم محیط توسعه مون بقول آقای موسوی، Brownfield نباشه ولی برای هر چیز جزئی هم نیاز به اينترفيس IModel و Observer و رویدادهای اطلاع رسانی و ... نداشته باشیم باید چکار کنیم؟ اینا بیشتر توسعه دهنده رو فراری میدن تا ترغیب به تمیزی/نظافت یا بوی خوب کد.
خوب اگه قرار باشه اینهمه پیچیدگی بیاد سمت برنامه نویس، پس صد و خرده ای مگ برای پلت فرم دات نت رو برای چی رو سرورهامون نصب می کنیم؟ با همون ++C/C کدهامونُ می نوشتیم دیگه :لبخند:
2) Divergent Change (تغییر واگرا) و Shotgun Surgery رو میشه بیشتر توضیح بدین؟ من نوعی تو برخی کدهام، فکر میکنم که درست تر از این دیگه نمیشه و از زمان و وقتم هم هزینه میکنم و دنبال کدهای تمیز مشابه و قابل استفاده برای نمونه می گردم و ... ولی باز هم - علیرغم دقت اولیه- طی زمان همچین مشکلاتی شبیه اون چیزی که آقای موسوی فرمودن برام پیش میاد. اینا دیگه Refactoring نیستند که تو توسعه نهایی سیستم تاثیری نداشته باشند؛ باید هزاران خط کد از اول بهینه سازی بشه یا دید توسعه دهندگان سیستم عوض بشه و بردارن تمام اجداد کلاسها رو بهینه نویسی کنند که اونهم معلوم نیست بازم Refused Bequest بشن یا نه! اینا واقعاً تو پروژه هایی که پرونده شون مثلاً بسته شده و تغییرات جزئی میخوان هزینه بر و اعصاب خوردکن هست؛ چه راه حلی پیشنهاد می کنید؟ یا بنظرتون از این به بعد چی کار کنیم بهتره؟
خیلی از به اشتراک گذاشتن تجربیات ارزشمند خودتون تشکر میکنم.