Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Tidy First?

Tidy First?

A Personal Exercise in Empirical Software Design
توسط Kent Beck 2023 122 صفحات
3.93
500+ امتیازها
گوش دادن
گوش دادن

نکات کلیدی

1. نظم‌دهی اول: رویکردی استراتژیک به طراحی نرم‌افزار

"طراحی نرم‌افزار تمرینی در روابط انسانی است."

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

  • بندهای محافظ
  • توضیح متغیرها و ثابت‌ها
  • استخراج توابع کمکی
  • نرمال‌سازی تقارن‌ها

هدف از نظم‌دهی اول این است که تغییرات رفتاری آینده را آسان‌تر و کارآمدتر کند. با سرمایه‌گذاری در ساختار کد، توسعه‌دهندگان گزینه‌هایی برای تغییرات آینده ایجاد کرده و هزینه توسعه نرم‌افزار را در طول زمان کاهش می‌دهند.

2. اقتصاد طراحی نرم‌افزار: ارزش زمان و اختیاری بودن

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

ارزش زمان پول و اختیاری بودن دو مفهوم کلیدی اقتصادی هستند که بر تصمیمات طراحی نرم‌افزار تأثیر می‌گذارند. ارزش زمان پول نشان می‌دهد که کسب درآمد زودتر و به تأخیر انداختن هزینه‌ها معمولاً مطلوب‌تر است. با این حال، اختیاری بودن بر ارزش ایجاد امکانات آینده تأکید می‌کند.

در طراحی نرم‌افزار، این به معنای:

  • تعادل بین تغییرات رفتاری فوری (درآمد) و بهبودهای ساختاری (سرمایه‌گذاری)
  • ایجاد گزینه‌هایی برای تغییرات آینده با بهبود ساختار کد
  • شناسایی این که عدم قطعیت و نوسان می‌تواند ارزش گزینه‌ها را افزایش دهد

درک این اصول اقتصادی به توسعه‌دهندگان کمک می‌کند تا تصمیمات آگاهانه‌ای درباره زمان و میزان سرمایه‌گذاری در طراحی نرم‌افزار بگیرند.

3. وابستگی و انسجام: اصول بنیادی طراحی نرم‌افزار

"هزینه(نرم‌افزار) ~= وابستگی"

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

نکات کلیدی:

  • وابستگی بالا هزینه تغییرات و نگهداری را افزایش می‌دهد
  • انسجام پایین کد را سخت‌تر برای درک و اصلاح می‌کند
  • کاهش وابستگی و افزایش انسجام از اهداف اصلی طراحی نرم‌افزار است
  • جداسازی رایگان نیست و شامل تبادل‌ها می‌شود

طراحی مؤثر نرم‌افزار به دنبال حداقل کردن وابستگی بین ماژول‌ها در حالی که انسجام را درون ماژول‌ها حداکثر می‌کند، است. این رویکرد به سیستم‌های نرم‌افزاری انعطاف‌پذیرتر، قابل نگهداری‌تر و کم‌هزینه‌تر منجر می‌شود.

4. تغییرات ساختاری معکوس‌پذیر: قدرت طراحی انعطاف‌پذیر

"تفاوت بین یک haircut بد و یک تتو بد چیست؟ haircut بد رشد می‌کند، اما تتو بد برای همیشه باقی می‌ماند."

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

مزایای تغییرات معکوس‌پذیر:

  • کاهش ریسک در اتخاذ تصمیمات طراحی
  • تشویق به آزمایش و یادگیری
  • امکان بهبودهای تدریجی

هنگام اتخاذ تصمیمات طراحی، در نظر بگیرید:

  • آیا این تغییر به راحتی معکوس‌پذیر است؟
  • اگر نه، آیا می‌توانیم آن را از طریق پرچم‌های ویژگی یا تکنیک‌های دیگر معکوس‌پذیر کنیم؟
  • چگونه می‌توانیم تأثیر تغییرات احتمالی غیرمعکوس‌پذیر را به حداقل برسانیم؟

با تمرکز بر تغییرات معکوس‌پذیر، توسعه‌دهندگان می‌توانند تصمیمات طراحی جسورانه‌تری بگیرند و سریع‌تر به نیازهای در حال تغییر پاسخ دهند.

5. تعادل بین نظم‌دهی و تغییرات رفتاری

"نظم‌دهی اول؟ احتمالاً بله. به اندازه کافی. شما ارزشش را دارید."

تعادل بین نظم‌دهی و تغییرات رفتاری برای توسعه مؤثر نرم‌افزار حیاتی است. در حالی که نظم‌دهی ساختار کد را بهبود می‌بخشد و گزینه‌هایی برای تغییرات آینده ایجاد می‌کند، مهم است که از افراط در آن پرهیز کرده و تحویل ارزش از طریق تغییرات رفتاری را به تأخیر نیندازیم.

راهنمایی‌ها برای تعادل:

  • نظم‌دهی اول زمانی که تغییر رفتاری فوری را آسان‌تر یا ارزان‌تر می‌کند
  • نظم‌دهی بعد از آن زمانی که از پیاده‌سازی یک تغییر رفتاری بینش‌های جدیدی کسب کرده‌اید
  • نظم‌دهی بعداً زمانی که یک لیست از بهبودها دارید که به طور مستقیم بر کار فعلی تأثیر نمی‌گذارد
  • در نظر گرفتن تبادل‌های اقتصادی بین تغییرات رفتاری فوری و بهبودهای ساختاری بلندمدت

به یاد داشته باشید که هدف نهایی ارائه ارزش از طریق نرم‌افزار کارا است. نظم‌دهی وسیله‌ای برای رسیدن به این هدف است، نه هدفی در خود.

6. مدیریت نظم‌دهی: ریتم، اندازه‌های دسته‌ای و زنجیره‌سازی

"نظم‌دهی‌ها مانند چیپس سیب‌زمینی هستند. یکی را می‌خورید و می‌خواهید یکی دیگر."

مدیریت مؤثر نظم‌دهی شامل یافتن ریتم مناسب، اندازه‌های دسته‌ای و زنجیره‌سازی نظم‌دهی‌ها است. این اطمینان می‌دهد که نظم‌دهی همچنان تولیدی باقی بماند و با تحویل ارزش تداخل نکند.

جنبه‌های کلیدی مدیریت نظم‌دهی:

  • ریتم: هدف‌گذاری برای دوره‌های کوتاه نظم‌دهی (دقایق تا ساعت‌ها) که با تغییرات رفتاری درهم آمیخته می‌شود
  • اندازه‌های دسته‌ای: نگه‌داشتن دسته‌های نظم‌دهی کوچک برای کاهش ریسک و بهبود فرآیندهای بازبینی
  • زنجیره‌سازی: آگاه بودن از اینکه چگونه یک نظم‌دهی می‌تواند به دیگری منجر شود، اما از وسوسه رفتن به عمق پرهیز کنید

بهترین شیوه‌ها:

  • جدا کردن تعهدات نظم‌دهی از تعهدات تغییر رفتاری
  • در نظر گرفتن عدم نیاز به بازبینی برای نظم‌دهی‌های کوچک و کم‌ریسک
  • آماده بودن برای "خارج شدن از درهم‌ریختگی" اگر نظم‌دهی و تغییرات رفتاری با هم ترکیب شوند

مدیریت مؤثر نظم‌دهی به حفظ تعادل سالم بین بهبود ساختار کد و تحویل ویژگی‌های جدید کمک می‌کند.

7. طراحی نرم‌افزار به عنوان تمرینی در روابط انسانی

"طراحی نرم‌افزار آماده‌سازی برای تغییر است؛ تغییر رفتار."

طراحی نرم‌افزار به عنوان یک فعالیت انسانی بر اهمیت روابط و ارتباطات در فرآیند توسعه تأکید می‌کند. این دیدگاه تمرکز را از ملاحظات صرفاً فنی به جنبه‌های انسانی توسعه نرم‌افزار منتقل می‌کند.

روابط کلیدی در طراحی نرم‌افزار:

  • توسعه‌دهندگان فردی با کد خود
  • توسعه‌دهندگان درون یک تیم
  • تیم‌های توسعه با ذینفعان تجاری

پیامدها:

  • تصمیمات طراحی بر چگونگی درک و اصلاح کد توسط دیگران تأثیر می‌گذارد
  • ارتباط مؤثر برای اتخاذ و توضیح انتخاب‌های طراحی حیاتی است
  • همدلی و توجه به توسعه‌دهندگان آینده (از جمله خود آینده‌تان) باید راهنمای تصمیمات طراحی باشد

با نگریستن به طراحی نرم‌افزار از منظر روابط انسانی، توسعه‌دهندگان می‌توانند سیستم‌های نرم‌افزاری قابل نگهداری‌تر، همکاری‌پذیرتر و با ارزش‌تری ایجاد کنند.

آخرین به‌روزرسانی::

نقد و بررسی

3.93 از 5
میانگین از 500+ امتیازات از Goodreads و Amazon.

کتاب Tidy First? با نظرات متنوعی مواجه شده و میانگین امتیاز آن ۳.۹۵ از ۵ است. خوانندگان از بینش‌های مختصر آن در زمینه‌ی بازسازی کد و اقتصاد طراحی نرم‌افزار قدردانی می‌کنند. بسیاری قسمت اول کتاب که به "ترتیب‌دهی" اختصاص دارد را برای مبتدیان مفید اما برای توسعه‌دهندگان با تجربه، ابتدایی می‌دانند. نقطه قوت این کتاب در بحث درباره‌ی زمان و چرایی مرتب‌سازی کد نهفته است که دیدگاه منحصر به فردی از طراحی نرم‌افزار با استفاده از مفاهیم مالی ارائه می‌دهد. برخی از خوانندگان به اختصار و قیمت بالای آن انتقاد کرده و پیشنهاد می‌کنند که می‌توانست به‌عنوان یک پست وبلاگ منتشر شود. به‌طور کلی، این کتاب به خاطر مشاوره‌های عملی و ایده‌های تحریک‌آمیزش در زمینه‌ی توسعه نرم‌افزار ارزشمند است.

درباره نویسنده

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

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Mar 1,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
50,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →