محسن زمانی
محسن زمانی
خواندن ۱ دقیقه·۳ سال پیش

پراکنده از برنامه‌نویسی (جاوا -کد تمیز)

فرض کنید در مبدا یکی از خطوط مترو هستید و وظیفه دارید به دیگران سرویس مشخصی بدهید. این سرویس از این قرار هست که مردم نام یک ایستگاه رو به شما می‌گویند و از شما فاصله تا آن ایستگاه را می‌خواهند. نکته مهم: ممکن است ایستگاهی با نام خواسته شده وجود نداشته باشد.

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

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

تعریف خروجی متد از نوع int
تعریف خروجی متد از نوع int


روش دیگر استفاده از کلاس Optional هست؛ کلاسی که از جاوای هشت به این زبان اضافه شده.

تعریف خروجی متد از نوع Optional
تعریف خروجی متد از نوع Optional

ترجیح من استفاده از روش دوم هست. چرا؟ چون وقتی کسی از بدنه متد شما اطلاعی نداره، متوجه نمی‌شه شما به ازای ایستگاههای یافت‌نشده، منفی یک برمی‌گردونید و استفاده ازش ممکنه باعث خطاهای منطقی در برنامه بشه. اما استفاده از کلاس Optional خواننده (کاربر) رو به فکر وا میداره که ممکن است در موقعیت‌هایی خروجی مقدار نداشته‌باشد.

هدف من از نوشتن این مطلب یادآوری دو نکته زیر بود:

  • کجاها بهتر است از کلاس Optional استفاده کنیم تا استفاده‌کنندگان از کدمان را به این فکر واداریم که امکان دارد در موقعیت‌هایی خروجی متد مقدار نداشته باشه و اینگونه از بروز بسیاری از رخدادهای NullPointerException جلوگیری می‌کنیم.
  • در بسیاری موارد با یک تغییر کوچک، می‌توان کد را تمیزتر و قابل‌اعتمادتر ساخت.


javaclean codeoptionalکد تمیزبرنامه نویسی
متولد سالهای دور، کرفس لاور و پراکنده‌نویس
شاید از این پست‌ها خوشتان بیاید