PDA

View Full Version : سوال: طریقه خواندن و بررسی سورس کدها



توسعه نویس
یک شنبه 20 دی 1388, 02:30 صبح
سلام. چون موضوع بحث رو نیدونم دقیقا به کدام بخش مربوطه، ترجیها همینجا مینویسم.

همه شما احتمالا سورس کدهای اماده و نمونه کارهای اشخاص رو دیده اید. بعضی از این برنامه ها خیلی خوب نوشته شده اند و در عین حال کدهای زیادی دارند. سورس کدهای این برنامه ها برای استفاده دیگر برنامه نویسان منتشر شده. ولی یه مشکل وجود داره. اونهم چگونگی بازبینی و خواندن این سورس هاست. وقتی که یه پروژه رو بازمیکنی و بیش از مثلا 50 تا 300 کلاس و کلی فرم و کدهای دیگه رو توش میبینی، خوب اینها رو باید بخونی و روش کار کنی تا ازش سر در بیاری. ولی چجوری ؟؟؟؟

این مشکلی که من دارم. بعضی ها براحتی سورس ها رو باز میکنند و میخونند و بعد هر جاش رو خواستند استفاده میکنند و حتی تغییرش میدهند. ولی من هر کاری میکنم توی کدها گم میشم. حتی وقتی که برنامه رو خط به خط دیباگ میکنم، وقتی تو هم تو هم کلاس ها همدیگه رو کال میکنند، براحتی آدم گیج میشه و سرنخ قضیه از دستش در میاد. :عصبانی++::گیج:

حالا سوالهای اساس:


به نظر شما آیا راه خاصی برای بررسی و سر درآوردن از سورس کدها وجود داره؟
چه مهارتی لازمه تا بشه یه سورس آماده و تقریبا حجیم رو بررسی و روش کار کرد؟

gh-reza
یک شنبه 20 دی 1388, 13:38 عصر
من در مواجه با کدهای خیلی طولانی ترجیح میدم برنامه دلخواهم رو بنویسم تا بخونم. ولی کد خوانی هم یه هنره. اغلب من از این روش استفاده میکنم:
بخشی از کاری رو که من میخام انجام بدم و توی کد مزبور هست در نظر میگیرم. کم کم کدهای اضافی رو پیدا میکنم و از کار میندازم. دوباره کامپایل و اجرا میکنم، اگه عمل مورد نظر هنوز انجام میشه، پس قسمتی که حذف کردم کاربردی برای من نداره و کد اضافست. اگه کار مورد نظر من مختل شد قسمتهای از کار افتاده رو برمیگردونم و قسمتهای کوچیکتری رو از کار میندارم. این رو تا وقتی که به کد مورد نظرم برسم تکرار میکنم. (اینم یه راهه دیگه)

Felony
یک شنبه 20 دی 1388, 14:40 عصر
اگر به طور کامل به زبان مورد نظر مسلط باشید به راحتی میتونید کد رو بخونید ، البته تمیز بودن کد هم یک طرف قذیه هست .
پس هم به مهارت شما بر میگرده و هم به اینکه آیا سورسی که در دسترس دارید کار یک برنامه نویس ماهر هست یا یک برنامه نویس که فقط بلده کد بزنه و یه سورس کثیف تحویل بده که خودش بعد از 1 هفته نمیتونه بخونش .

Empyrium
یک شنبه 20 دی 1388, 15:04 عصر
با سلام

اخیرا در یکی از جلساتی که در تیم وب دولوپ گوگل بر گزار شد موضوع جلسه یا این بیانه آغاز شد:

"دنیای برنامه نویسی به مانند یک گرامر و یک دستور زبان می با شد و لزوما یاد گیری حروف الفبای هر گرامر(اصول ساده و ساز و کار برنامه نویسیی) به منزله خوب صحبت کردن و نوشتن نسیت"

دوست عزیز مورد ی که شما با آن اشاره کردین،یکی از بزرگترین معزل هایی می یاشد که هر برنامه نویس با آن سرو کار پیدا خواهد کرد.

به طوری که هر کسی در این حرفه بخواهد در بازار کار قرار بگیرید با تیمی که از فبل یک سافت ور را دولوپ کرده است روبه رو می شود و به برسی و تحلیل کد از قبل نوشته شده در گیر می شود.

متا سفانه حتی شرکت های زیادی را در ایران دیده ام که یک زمان یک ماهه را برای برنامه نونیسان تازه وارد تعیین می کندد و عمل کرد او را از trace کد ارزیابی می کنند و بر این اساس در ادامه کار و ماندن در تیم، تصمیم گیری می کنند.

اگر سافت ور از قبل نوشه شده دارای داکیومنت های استانداردی باشد تا حدی این مشکل را کاهش می دهد.

در غیر این صورت کار به سختی پیش خواهد رفت،و به نظر شخص من درک کدی که به مدت یک یا دو سال توسط برنامه نوییسان مختلف با سلیقه هاو نوع کد نویسی گوناگون نوشته شده است عملا غیر منطقی به نظر می رسد.(در بازه زمانی کوتاه)

و اتفاقی که رخ می دهد (به مثابه چیزی که تا کنون برای اکثر تیم ها رخ داده) یک سافت ور در مسیر پایانی خود قرار می گیرد و بعد از چند سال قابل توصعه نمی باشد.و تیم را دچار شکست و یا مجبور با باز نویسی مجدد هسته اصلی ساقت ور می کند،

در مورد بررسی و سر درآوردن از کد ،با در نظر گرفتن تجربه و نظر شخصی ام ، اگر با یک دیدگاه ماژول وار و به تفکیک

ماژول های برنامه بپردازید تا حدی مفید خواهد بود.

به هیچ وجه در پی آن نباشد که همزمان بخواهید کد کل پرژه را برسی کنید.که جز سر درگمی دست آورد دیگری نخواهد داشت. زمانی که نرم افزا را اجرا شد سیع کنید به تفکیک ماژول ها ی مختلف بپردازید. و هر ماژول را جدا گانه تحلیل کنید.

و اگر هم نیاز به تغییری هست باید بعد از مسلط شدن به ماژول مربورطه و برسی کلیه ماژول های درگیر با آن ماژول ، پیش رفت، نه برسی کل پروژه .

تحلیل و برسی کدها ی استاندارد خیلی در این زمینه مو ثر می باشد،

توسعه نویس
یک شنبه 20 دی 1388, 23:58 عصر
درسته. این منطقی تره. ولی آیا راه های دیگه ای هم هست؟ آیا ابزارهایی برای درک بهتر کدها وجود داره.

با روشهایی که گفتید باید چند سال رو صرف فهم کدهای مثلا یک لایبرری کرد. ولی باید روشهای میانبر و کوتاه تری هم باشه.

به عنوان مثال چگونه باید مکانیزم، عملیات و طرز کار کدهای یک پرتال مانند DotNetNuke رو بررسی کرد و روی سورس، مسلط شد؟

BackTrace
دوشنبه 21 دی 1388, 11:03 صبح
برای تسلط روی یک کد باید آشنایی کامل با زبان داشته باشید و بتونین عملکرد توابع یا کلاسهای به کار رفته رو پیدا کنید که اینکار میتونه با Trace کردن انجام بشه. استفاده از Editorهای مخصوص اون زبان میتونه کمک بزرگی به شما بکنه چون قابلیت Highlight کردن کدها، تفکیک قسمت های مختلف برنامه نویسی مثل Constantها، Keywordsها، Classها و ... رو دارن. برای کار با کدهای C++/C من ابزار Doxygen رو سراغ دارم که میتونه به صورت خودکار Document سازی کنه (البته نمیدونم روی بقیه کدها هم کار میکنه یا نه).

موفق باشید.