TGViewer
مهندسی نرم‌افزار - Software Inside مهندسی نرم‌افزار - Software Inside @software_inside · 335 subscribers
Post #25 3.36K
Enums in Programming Languages and Exhaustiveness

اخیرا این ویدیو رو توی یوتیوب دیدم که نحوه‌ی تعریف Enum توی زبان‌های برنامه‌نویسی مختلف و امکاناتشون رو بررسی و مقایسه می‌کرد.

یکی از نکاتی که توجهم رو جلب کرد این بود که Golang تقریبا امکانات خاصی برای Enum نداره و باید مقادیر enum رو مثل constant تعریف کنی و حتی اگر دوتا اینام مقادیری با اسم یکسان داشته باشن توی یه فایل اسم‌هاشون باهم تداخل میخوره. واقعا ایده‌ای ندارم در این حد ساده بودن خوبه یا نه ولی فکر میکنم اذیت کننده باشه.

یکی از چیزایی که کلا توی Enum ها کاربردیه قابلیت Exhaustiveness هست. یعنی اگر روی یه متغیر از جنس enum سوویچ کیس یا match زدی خود کامپایلر چک کنه که همه‌ی حالت‌ها پوشش داده شده یا نه و مجبورت کنه همه‌ی حالت‌ها رو پوشش بدی یا صریحا ignore اشون کنی. خوبیش اینه که اگر چندماه بعد به این enum یه مقداری اضافه کنی توی زمان compile متوجه میشی که کجاها رو باید بری پیاده‌سازی کنی و چه مسیرهای جدیدی به کدت اضافه میشه. همچنین احتمال خطا و اینکه یه حالتی رو فراموش کنیم هم از بین میره.
راست و نسخه‌های جدید جاوا این قابلیت رو دارن. جاوا توی نسخه‌های جدید امکانات switch و enum رو خیلی بهبود داده و بهتر کرده که قابل تحسینه.

زبان Rust خیلی enum های کاربردی و قدرتمندی داره. این قابلیت‌ها رو توی بقیه زبون‌ها مثل جاوا و سی‌شارپ با ترکیب sealed interface و value class ها میشه درست کرد اما سینتکس Rust واقعا مختصر و مفیده.


#language_design #enum

✴️ @software_inside - مهندسی‌نرم‌افزار
YouTube Ranking Enums in Programming Languages We rank all the different implementations of enums in programming languages, from simple constant collections to proper algebraic datatypes. Timestamps: 0:00 Intro 0:21 JavaScript 1:05 Go 1:49 Python 2:54 TypeScript 4:24 C++ 5:07 Java 5:48 Kotlin 6:10 Rust…
  • 👌 2
More from @software_inside
  1. Sep 19, 2026اخیرا یک اصطلاحی توی شبکه های اجتماعی زیاد دیده میشه به اسم meat proxy. میت پروکسی(پروکسی…
  2. Nov 11, 2025Transactional Outbox Pattern فرض کنید یه مولفه‌ای دارید که باید توی دیتابیس یه سری رکورد ر…
  3. Oct 11, 2025#talk #postgres Hands On PostgreSQL 18 هفته‌ی پیش نسخه‌ی جدید پستگرس منتشر شده و تغییرات ز…
  4. Sep 1, 2025یه بحثی که همیشه داغه، این همه عنوان شغلی تو حوزه AI از کجا میاد و فرقشون چیه. خیلی از این…
  5. Aug 1, 2025#مطلب Time to upgrade your monitor https://tonsky.me/blog/monitors/ 🖥 برای برنامه‌نویسی چ…
  6. Jul 4, 2025#مطلب The Part of PostgreSQL We Hate the Most https://www.cs.cmu.edu/~pavlo/blog/2023/04/t…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →