تبلیغات
آکنده
آکنده ،،،،
در اندیشه پرواز هم نباش، پرنده هم مردنی است

روش Design By Code (قسمت سه)[توسعه نرم‏افزار , ]

من بیشتر از اینكه یه طراح و یا تحلیلگر باشم، یه برنامه نویس محسوب میشوم، و اغلب وقتی كه یك كار را انجام میدهم، اول كد مینویسم تا به نتیجه برسم و وقتی كه یكبار تمام كد را نوشتم بررسی میكنم كه آیا از بعضی از اصول كاری مورد نظرم تبعیت كرده است یا خیر؟ و در كل كاری به نام تحلیل و طراحی برای پیاده سازی انجام نمیدهم.

تو محل كارم هم روشهایی برای دور زدن طراحی كردن ها دارم، یه بار به عنوان طراحی component ای كه باید مینوشتم كه در واقع سرویسهای جهانی سازی(globalization) بود به عنوان طراحی مستند راهنمای برنامه نویسان آن component را آنطور كه در ذهنم در نظر داشتم، نوشتم و به مدیرم ارائه دادم و قرار شد كه همان را پیاده سازی كنم. برای نوشتن مستند راهنما ساختار بعضی از كلاسها را نیز نوشتم ولی متودهایش را پیاده سازی نكردم تا بتوانم تصوری از اینترفیس آن component و همچنین نحوه عملكرد آن و تعامل اشیا آن با یكدیگر بدست آورم.

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

در هر iteration ساده ترین رفتار ممكن را پیاده سازی كنید.

اصول low coupling و high cohesion و دیگر اصول class normalization را به شدت مورد توجه قرار دهید. چون همانطور كه در نرمالسازی رابطه ها در پایگاه داده بارها تجربه كرده ایم، عدم تبعیت از این نوع اصول مشكلات اساسی و وحشتناكی را به بار می آورند.

هرگز كاری را به آینده موكول نكنید، كل یك تكه از كد - كلاس، كامپوننت،متود،... - را به طور كامل یكجا و در یك مقطع زمانی بنویسید.

كد را مستند كنید، اگر در مورد عملكرد كدی كه خودتان نوشته اید به راحتی مستندات همراه را اضافه كنید، احتمالاً منطق مورد استفاده در كدتان غلط است و به همین دلیل نمیتوانید در مورد آن توضیح بنویسید.

من حدود 8 -9 ماه است كه بر روی یك ORM (ابزار نگاشت شیگرایی-رابطه ای) كار میكنم، در تمام مدت پیاده سازی iteration اول كارم كه به 15 هزار خط كد رسید و مدت 4 ماه طول كشید، حتی یكبار هم آن را تست نكردم و این ORM شامل مولفه های گوناگون بودند كه باید با هم كار میكردند، بعضی از آنها مربوط به پایگاه داده بودند و بعضی مربوط به ریموتینگ و دسته ای نیز مربوط به سرویسهای رابط كاربر و همچنین مولد كد(به خاطر type-safety مجبور شدم مولد كد داشته باشم.). بعد از حدود 4 ماه تصمیم گرفتم برای تست آن یك برنامه حسابداری شخصی مختصر با تقلید از Microsoft Money به طور آزمایشی بنویسم تا هم اجرای چارچوپ ORM را تست كنم و هم كارائی آن را در افزایش سرعت تولید بررسی كنم. این كار فقط حدود 2 هفته طول كشید كه البته حدود نصف آن مربوط به افزودن چیزهایی بود كه تاكنون به آنها توجه نداشتم. نمیتونید تصور كنید كه چه حسی داشتم، از اینكه بعد این مدت طولانی تونستم كدهایم را در حال اجرا میدیم فوق العاده لذت میبردم و برای خودم ذوق میكردم، از اینكه تمام مشكلاتش را تنها در مدت 1 هفته حل كردم فوق العاده خوشحال بودم، حتی یك شب تا صبح از فرط خوشحالی خوابم نبرد.

راستی هیچ دقت كردید با وجود اینكه اسم وبلاگم را random انتخاب كردم ولی به غرورم میخورد.)

الان دارم یك مستند در مورد CAB میخونم، خیلی دوست دارم كه در مورد پیچیدگی(complexity) و سادگی(simplicty) و ساده ارائه كردن(simplexity) دیدگاهم را ارسال كنم.

به امید خدا تا فردا...

تاریخ فرستادن:سه شنبه 27 تیر 1385، نویسنده: فرشید کزازی (همیشه همینه)
تعداد بازخوردها: ، شما هم دیدگاه خود را ارائه کنید

 

درباره فرشیدکزازی

 
 

هیچ چیز قابل گفتنی درباره خودم وجود نداره.
کاری داشتید به farshidkazazi@gmail.com پیام بفرستید.

 

 

درباره آکنده

 
 

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

** اسم وبنوشت هیچ معنای خاصی ندارد، اولین کلمه ای بود که موقع ثبت نام به ذهنم رسید.

دسته بندی نگاره ها:
عمومی (7)
توسعه نرم‏افزار (13)

 

 

وبنوشتهای دیگر

 
  زیر چتر باران
واژگان مدیریت دانش
 

 

ابزارها

 
 
جستجو در بلاگ


برای دریافت نگاره ها از طریق email با وارد کردن آدرس email نام‏ نویسی کنید:
بایگانی گذشته
مرداد 1385 (2)
تیر 1385 (3)
اردیبهشت 1385 (1)
بهمن 1384 (4)
آذر 1384 (1)
آبان 1384 (4)
مهر 1384 (5)