Software Engineer Labdon
601 subscribers
43 photos
4 videos
2 files
744 links
👑 Software Labdon

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
Forwarded from Bardia & Erfan
🍾🥂🎁
🍾3
Forwarded from AI Labdon
Kilo combines the best features of AI coding tools into one. Batteries included.
یه ابزار اوپن سورس که میتونید به کمکش از هوش مصنوعی حین کد زدن استفاده کنید یه جورایی رقیب cursor و cline محسوب میشه.

#AI #Tools #Coding #VSCode #IDE #Editor #GPT #Kilo


https://kilocode.ai
YAML is known to be nobody's friend and almost everyone's enemy. Try this to see if it's your friend or foe!
یه تست باحال که میتونین بفهمین چقدر فایل‌های YAML رو میشناسین و چقدر نه :)

#YAML #Quiz #Test #Config

https://www.ohyaml.wtf
این API های رایگان قطعا توی پروژه هات بدردت میخورن

از این 10 api رایگان میتونیم به آسانی در پروژه هامون استفاده کنیم و پروژه های تمرینی مون رو میتونیم تبدیل به پروژه داینامیک با دیتا های واقعی کنیم
1 - Open Trivia Database
این api سوالات دانستی رو در دسته بندی های مختلف بهمون میده که در برنامه های کوییز و امتحانی میتونه استفاده بشه
2 - Bored Api
این api فعالیت های تصادفی و شانسی برای انجام وقت هایی که بی حوصله هستیم پیشنهاد میده که برای استفاده در برنامه های پیشنهادی , تعریفی , جرعت و حقیقت برای پیشنهاد کار های جرعت عالیه
3 - Universities
این api اطلاعات درباره دانشگاه های سرتاسر جهان داره که برای برنامه های اطلاعات و توضیح درباره دانشگاه ها و آموزشی عالیه
4 - Fun Translations Api
این api متن هارو به زبان های فانتزی و فان ترجمه میکنه که برای برنامه های سرگرمی عالیه
5 - IPGeoLocation Api
این api داده های مکان یابی بر اساس آدرس ip ارائه میده
6 - MealDB
این api یک دیتابیس از وعده های غذایی و دستور پخت و پز بهمون میده که برای برنامه های آموزشی غذایی ایده آل هست
7 - Numbers Api
این api اطلاعات تصادفی دباره اعداد بهمون میده , چه تاریخی و چه ریاضیات
8 - Currency Exchange Rates
این api داده های تبدیل ارز به صورت بلادرنگ بهمون میده که برای برنامه های مرتبط با امور مالی و بازار های جهانی عالی هستش
9 - Open Library Api
این api دسترسی به داده های وسیعی از کتاب ها و نویسندگان رو بهمون میده که برای استفاده در برنامه های کتاب , مطالعه میتونه مورد استفاده قرار بگیره
10 - Random User
این api دیتا های اشخاص تصادفی بهمون میده مثل (اسم , پروفایل و ....)
1👀1
بنظرم اینکه خودتون درک کنید تکنولوژی هایی که باهاشون کار میکنید چطور در زیرلایه کار میکنن دید از بالای خوبی به ادم توی کار میده؛ توی این ریپو برای زبان های متخلف ساخت مرحله به مرحله تکنولوژی هایی مثل git, docker, redis, torent , http و sql هست.

https://github.com/codecrafters-io/build-your-own-x?tab=readme-ov-file

<Moj./>
Forwarded from Bardia & Erfan
🤨 دارک مود؛ ناجی چشم‌ها یا یه توهم مدرن...؟!

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

مزایای علمی دارک مود :

▪️کاهش نور آبی : نور آبی زیاد، ریتم خواب رو مختل می‌کنه، و دارک مود می‌تونه به خواب بهتر کمک کنه.

▪️کاهش مصرف باتری : روی نمایشگرهای OLED، رنگ‌های تیره مصرف انرژی کمتری دارن.

▪️کاهش خیرگی در محیط‌های کم‌نور : وقتی نور اطراف کم باشه، دارک مود فشار کمتری به چشم وارد می‌کنه.

معایب علمی دارک مود :

▪️کاهش خوانایی متن در روز: چشم انسان به خوندن متن تیره روی پس‌زمینه روشن عادت داره، و دارک مود توی نور زیاد باعث خستگی چشم میشه.

▪️برخی تحقیقات نشون میدن که چشم توی حالت دارک مود بیشتر مجبور به تطبیق و تمرکز میشه، که می‌تونه خستگی ایجاد کنه.

▪️برخلاف تصور عموم، تغییر تم به تنهایی تأثیر زیادی روی کاهش خشکی و خستگی چشم نداره، بلکه میزان پلک زدن و استراحت دادن به چشم مهم‌تره.
2👍1
میخوای با چالش های مختلف برنامه نویسی آشنا بشی و اونارو حل کنی؟!

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

علاوه بر اینکه اکثر زبان های برنامه نویسی رو پوشش میده بازی ها و چالش های مختلف زیادی هم داره و علاوه بر اینها یک IDE قدرتمند برای برنامه نویسی رو در اختیارمون گذاشته

https://www.codingame.com
1
Forwarded from Gopher Academy
کدوم هوش مصنوعی رو انتخاب می کنید واسه کارهای برنامه نویسی؟
Anonymous Poll
48%
GPT
12%
Grok
42%
Claude
17%
other
چند وقت پیش مسئولیت Refactor بخشی از یک پروژه بزرگ Next.js بهم سپرده شد. بخشی از این کار، شناسایی و حذف کدها و فایلهای بلااستفاده (Dead Code) بود کاری که توی پروژههای بزرگ معمولاً سخت، زمانبر و پرریسکه.

برای سادهتر کردن این مسیر، به ابزار knip رسیدم. ابزار قدرتمندی که فایلها، فانکشن ها و حتی dependencyهای بلااستفاده رو شناسایی میکنه.
در عمل، knip تونست بخش زیادی از dead code ها رو شناسایی کنه، اما دو نکتهی جالب و مهم برام داشت:
- اولی مربوط به component tree بود.
یکسری کامپوننتها بهعنوان dead code تشخیص داده شده بودن، در حالی که وقتی سرچ میکردم، میدیدم یه جای دیگه دارن استفاده میشن. اما وقتی کامپوننت parent رو بررسی کردم، فهمیدم اون خودش هیچجا استفاده نشده و این باعث شده بود که child رو هم dead code بدونه. این عمق تحلیل وابستگی، برام قابل توجه بود.
- دومی تشخیص ناقص بعضی dependencyها بود.

برای مثال، tailwindcss و یکی از پلاگینهاش که در فایل CSS ایمپورت شده بودن، بهعنوان unused معرفی شدن. همینطور بعضی پلاگینهای ESLint هم به اشتباه در لیست قرار گرفته بودن. این یعنی خروجی ابزار، هرچقدر هم دقیق باشه، همچنان نیاز به بررسی انسانی داره.

این تجربه باعث شد ابزارهای تحلیل ایستا (static analysis) رو جدیتر ببینم؛ نه فقط برای حذف کد، بلکه برای درک بهتر ساختار پروژه.
https://github.com/webpro-nl/knip

@ <Mohammad Nazari/>
2
## 🟢 Entry-Level (0-2 سال)

تمرکز اصلی: Technical Fundamentals

چی ازت انتظار دارن:
- اAlgorithm و Data Structure بدونی
- کد تمیز و خوانا بنویسی
- اBug fixing و debugging
- اCode review ها رو implement کنی
- استفاده از tools مثل Git، IDE ها

مصاحبه چجوریه:
-ا LeetCode problems
- ا"Reverse این linked list رو"
-ا "Big O این کد چیه؟"
- اLive coding sessions
- شاخص اصلی: Problem-solving ability

مثال کار روزانه:
- اFeature کوچیک پیاده کنی
- اTest بنویسی
-ا Documentation update کنی
- اSenior ها کارت رو review کنن

---

## 🟡 Senior-Level (3-7 سال)

تمرکز اصلی: End-to-End Ownership

چی ازت انتظار دارن:
- اIdeation: از business requirement تا technical solution
Design: System architecture و database design
- اImplementation: کدنویسی + mentoring junior ها
Testing: Unit test, integration test، A/B testing
Deployment: CI/CD، monitoring، scaling
- اMaintenance: Performance optimization، bug triage

مصاحبه چجوریه:
- اSystem Design: "Instagram رو چجوری design می‌کنی؟"
- اBehavioral: "یه conflict تو تیم چجوری حل کردی؟"
- اTrade-offs: "SQL vs NoSQL کی استفاده می‌کنی؟"
- کمتر coding، بیشتر architecture

مثال کار روزانه:
- اProduct Manager با تو صحبت می‌کنه
-ا Technical specs می‌نویسی
- اJunior developer ها رو guide می‌کنی
- اPerformance metrics رو track می‌کنی
- اProduction issues حل می‌کنی

---

## 🔴 Principal-Level (7+ سال)

تمرکز اصلی: Leadership & Strategy

چی ازت انتظار دارن:
- اTechnical Strategy: Technology roadmap برای کل company
- اTeam Leadership: Multiple team ها رو coordinate کنی
- اMentorship: Senior engineer ها رو train کنی
- اCross-functional: Product، Business، Engineering alignment
- اInnovation: New technologies و best practices معرفی کنی
- اHiring: Technical interview ها و team building

مصاحبه چجوریه:
- ا"Company ما scale کنه چه tech stack پیشنهاد می‌دی؟"
- "چجوری team culture بسازی؟"
- "یه technical debt چجوری prioritize می‌کنی؟"
- ا"Conflict بین دو team رو چجوری حل می‌کنی؟"
- کدنویسی اصلاً نیست!

مثال کار روزانه:
- اC-level executives رو advise می‌کنی
-ا Technical RFC ها رو approve می‌کنی
- اTeam retrospective ها رو facilitate می‌کنی
- اIndustry conferences می‌ری
-ا Company hiring strategy تعیین می‌کنی

نکته مهم: هر سطح مهارت‌های سطح قبلی رو هم باید داشته باشه، فقط تمرکز عوض میشه!
2
این ریپو واقعاً مثل یه گنج پنهانه که خیلی‌ها به راحتی از کنارش رد می‌شن، بدون اینکه بدونن چه ارزش بزرگی پشتشه. اینجا بیش از ۳۰۰ تا Case Study از بیشتر از ۸۰ تا شرکت پیشرو دنیا جمع‌آوری شده؛ شرکت‌هایی مثل Netflix، Airbnb و Doordash که هر کدوم تجربۀ واقعی‌شون از ML System Design رو به اشتراک گذاشتن.

اما موضوع فقط جمع کردن تجربه‌ها نیست؛ هر کدوم از این Case Studyها یه دریچه‌ست به دنیای واقعی، جایی که می‌شه دید چطور ML توی دل محصول‌ها و فرآیندها به کار گرفته می‌شه تا کیفیت و کارایی رو چند برابر کنه. این یعنی به جای خوندن تئوری‌های خشک، شما با مثال‌های زنده و
قابل لمس سروکار دارین.

لینک ریپو:
https://github.com/Engineer1999/A-Curated-List-of-ML-System-Design-Case-Studies

<Reza Jafari/>
Forwarded from AI Labdon
🤖 علاقه‌مند به دنیای هوش مصنوعی هستی؟

🏖 دنبال می‌کنی که چطور AI داره دنیا رو متحول می‌کنه؟

🍻پس جای درستی اومدی!

🎯 در کانال ما هر روز:

🔍 جدیدترین اخبار و دستاوردهای دنیای AI

🧠 تحلیل‌ تخصصی در حوزه یادگیری ماشین، دیپ لرنینگ و مدل‌های زبانی

💼 بررسی کاربردهای هوش مصنوعی در پزشکی، صنعت، آموزش، امنیت و اقتصاد

🛠 معرفی ابزارها، دوره‌ها و منابع یادگیری

📈 بررسی ترندها و آینده‌ فناوری‌های مرتبط با هوش مصنوعی

🍄همه‌ی این‌ها به زبان ساده، خلاصه و قابل فهم برای همه علاقه‌مندان — از مبتدی تا حرفه‌ای!
👇👇👇👇👇👇

https://t.iss.one/ai_labdon
Forwarded from Notification
🔵 عنوان مقاله
Document less, share more: A modern take on test evidence

🟢 خلاصه مقاله:
در رویکردی مدرن به «شواهد آزمون»، هدف جایگزین‌کردن مدارک حجیم با نشانه‌های سبک، به‌روز و قابل مصرف است: کمتر مستندسازی کنید و بیشتر به‌اشتراک بگذارید. به‌جای گزارش‌های طولانی، از داشبوردهای زنده، یادداشت‌های کوتاه جلسه، اسکرین‌شات/ویدئوهای توضیح‌دار و لینک به لاگ‌ها و اجرای CI استفاده کنید؛ شواهد باید نیت، ریسک، نتیجه و گام‌های بعدی را روشن کند. سطح مستندسازی را با زمینه تطبیق دهید: در حوزه‌های مقرراتی اسناد رسمی لازم است، اما در اکثر تیم‌ها «شواهد بنا به نیاز» و یادداشت‌های مختصر پیوستِ استوری‌ها کافی است. برای افزایش دیده‌شدن تست، فرایند را روایت کنید: به‌روزرسانی‌های سریع در کانال‌ها، دمو، باگ‌بش و جفت‌کاری، همراه با تابلوهای ریسک/پوشش و داشبوردهای CI. اتوماسیون شواهد خام را جمع‌آوری می‌کند و انسان‌ها معنا و ریسک‌ها را خلاصه می‌کنند. معیار خوب‌بودن شواهد، نه طول آن، بلکه سرعت و کیفیت تصمیم‌هایی است که امکان‌پذیر می‌کند.

🟣لینک مقاله:
https://cur.at/rnLzzYS?m=web


👑 @software_Labdon
👌1
🔵 عنوان مقاله
CSI — Coverage, Speed and Information

🟢 خلاصه مقاله:
این مقاله یک سرواژه عملی برای تمرکز تست پیشنهاد می‌کند: CSI، مخفف Coverage (پوشش)، Speed (سرعت) و Information (اطلاعات). پوشش یعنی آزمودن آگاهانه پهنا و عمقِ نواحی پرریسک و شفاف‌کردنِ آنچه تست شده و نشده؛ سرعت یعنی رساندن بازخورد قابل اتکا در کوتاه‌ترین زمان با کوچک‌سازی دامنه، بهبود تست‌پذیری و اتوماسیون هدفمند؛ و اطلاعات یعنی ارائه بینش شفاف، قابل تصمیم‌گیری و صادقانه درباره ریسک‌ها و عدم‌قطعیت‌ها. نویسنده تأکید می‌کند که CSI یک موازنه است: بسته به موقعیت، ممکن است یکی را پررنگ‌تر کنید، اما حداقل انتظار از هر تستر این است که در برنامه‌ریزی و بازنگری کار خود، هر سه بُعد را بسنجد و به‌روشنی به ذی‌نفعان منتقل کند.

🟣لینک مقاله:
https://cur.at/D7svZsX?m=web


👑 @software_Labdon
🔵 عنوان مقاله
AI Agents and Test Suites: Lessons from the Trenches

🟢 خلاصه مقاله:
این مقاله با تکیه بر تجربه عملی جیمز کیپ نشان می‌دهد که عامل‌های هوش مصنوعی در نگه‌داری و رفع خطای تست‌ها مفیدند، اما جایگزین مهندسی منضبط نیستند. بهترین کاربردها: خلاصه‌سازی لاگ‌های طولانی، پیوند خطاها به تغییرات اخیر، پیشنهاد وصله‌های حداقلی، و تولید/بازآرایی تست‌های پوشش‌دهنده لبه‌ها. چالش‌ها: ناپایداری ناشی از زمان، تصادفی‌بودن، هم‌زمانی و وابستگی به سرویس‌های بیرونی؛ بنابراین باید محیط تست را قطعی کرد (فریز زمان، تعیین seed، استفاده از mock/fake و DI). برای ایمنی و کیفیت: تغییرات کوچک با توضیح، بازبینی انسانی، اجرای کامل تست‌ها، زمینه‌دهی دقیق به مدل و یکپارچه‌سازی در CI/CD جهت تریاژ و پیشنهاد اصلاح‌ها؛ همچنین پایش معیارهایی مانند زمان رفع، نرخ flaky و تغییر پوشش. در نهایت، با رعایت حریم خصوصی و مستندسازی الگوهای خطا، AI شتاب‌دهنده مؤثری است، نه گلوله نقره‌ای.

🟣لینک مقاله:
https://cur.at/dbtATNz?m=web


👑 @software_Labdon
1
🔵 عنوان مقاله
Flutter UI Testing with Patrol Framework

🟢 خلاصه مقاله:
این مقاله چارچوب Patrol را برای آزمون رابط کاربری اپ‌های Flutter معرفی می‌کند و نشان می‌دهد چگونه با حداقل پیکربندی آن را روی اندروید و iOS راه‌اندازی و اجرا کنید. نویسنده روند کلی افزودن بسته و ابزار خط فرمان، ایجاد تست‌های ساده، اجرای آن‌ها روی شبیه‌ساز یا دستگاه واقعی، و مشاهده لاگ‌ها و خروجی‌ها را توضیح می‌دهد. تمرکز بر قابلیت‌های عملی Patrol است؛ از جمله تعامل با عناصر بومی پلتفرم در کنار ویجت‌های Flutter، کنترل مجوزها و دیالوگ‌های سیستمی، و کاهش ناپایداری تست‌ها. در پایان، بهترین شیوه‌ها و ادغام با CI برای اجرای خودکار روی هر دو پلتفرم و گسترش تدریجی پوشش تست مطرح می‌شود.

🟣لینک مقاله:
https://cur.at/RV62fFO?m=web


👑 @software_Labdon
1
🔵 عنوان مقاله
12 Activities of Quality Management: Seeing Beyond Testing

🟢 خلاصه مقاله:
این مقاله با عنوان «۱۲ فعالیت مدیریت کیفیت: فراتر از تست‌کردن» از تیم‌ها می‌خواهد کیفیت را فقط به اجرای تست محدود نکنند. با تکیه بر توصیه‌های داریا کوتِلِنِتس، تاکید می‌کند که کیفیت یک مسئولیت مشترک است که از مرحله برنامه‌ریزی و شفاف‌سازی نیازمندی‌ها آغاز می‌شود و با بازخوردگیری و بهبود مستمر پس از انتشار ادامه می‌یابد. پیام اصلی این است: کیفیت را در جریان عادی کار ادغام کنید، با همکاری بین نقش‌ها و تصمیم‌گیری مبتنی بر داده از خطا پیشگیری کنید، چرخه‌های بازخورد و سنجه‌های معنادار بسازید، و به‌جای تکیه بر تست به‌عنوان «دروازه پایانی»، مالکیت جمعی و بهبود پیوسته را نهادینه کنید تا هم فرایند و هم تجربه مشتری بهتر شود.

🟣لینک مقاله:
https://cur.at/wfvh380?m=web


👑 @software_Labdon
2
🔵 عنوان مقاله
Using Randomization in Functional Testing

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

🟣لینک مقاله:
https://cur.at/uIjVj2P?m=web


👑 @software_Labdon
2
🔵 عنوان مقاله
Tracking UI to API Connections with Playwright

🟢 خلاصه مقاله:
ایرفان مجاجیچ نشان می‌دهد که چگونه با استفاده از تابع waitForRequest در Playwright می‌توان پیوندی دقیق بین اقدامات رابط کاربری و فراخوانی‌های API برقرار کرد. به‌جای تکیه بر تاخیرهای زمانی، تست مستقیماً منتظر درخواست HTTP موردنظر می‌ماند و بدین‌ترتیب رفتار شبکه‌ای پیش‌بینی‌پذیرتر می‌شود. این کار امکان بررسی روش، آدرس و بدنه درخواست را فراهم می‌کند و با ترکیب آن با انتظار برای پاسخ یا به‌روزرسانی‌های UI، از شرایط رقابتی و خطاهای پراکنده جلوگیری می‌شود. نتیجه، تست‌های UI خواناتر، پایدارتر و قابل اعتمادتر است.

🟣لینک مقاله:
https://cur.at/axtsStz?m=web


👑 @software_Labdon
🤝1
🔵 عنوان مقاله
Automating from Console with AI Assistance

🟢 خلاصه مقاله:
DevTools کروم اکنون از دستیار هوش مصنوعی در کنسول پشتیبانی می‌کند و امکان پیشنهاد، توضیح و تولید کد را مستقیماً در مرورگر فراهم می‌سازد. آلن ریچاردسون این قابلیت را آزمایش کرده و نشان می‌دهد چگونه می‌توان با درخواست‌های طبیعی، اسکریپت ساخت، خطاها را فهمید و کد را به‌صورت تکرارشونده بهبود داد. جمع‌بندی او: این ابزار زمانی بهترین عملکرد را دارد که به‌عنوان همکار استفاده شود؛ با پرامپت‌های شفاف و اعتبارسنجی نتایج. نتیجه عملی آن، تسریع در تست اکتشافی، رفع اشکال و اتوماسیون‌های کوچک است، هرچند هنوز به قضاوت و دانش کاربر از DevTools نیاز دارد.

🟣لینک مقاله:
https://cur.at/PGplUR3?m=web


👑 @software_Labdon
1
یکی از مشکلات بزرگ کتب برنامه‌نویسی  همیشه این بوده که موضوع Encapsulation رو به شکلی تدریس کرده‌اند که انگار موضوعی است که فقط و فقط مختص به OOP هست؛ و از اون بدتر، این موضوع رو جوری جا انداختن که افراد فکر میکنند Encapsulation یعنی همان Access modifiers ها (private,public).

برای همین هست که بیشتر افراد هیچگونه تصوری از این ندارند که Encapsulation خارج از OOP چگونه است، و حتی در همون پارادایم OOP هم بدرستی نمیتونن کپسوله سازی رو پیاده سازی کنن و اجزای مختلف کدهاشون درهم و برهم هست.

موضوع Encapsulation یک موضوع منطقی است و برعکس چیزی که بیشتر کتاب‌ها بهتون میگن ربطی به Access modifier ها ندارد. Access modifier ها صرفا یک برچسب هستند که به طور عمده دو وظیفه رو دنبال میکنن:  یک اینکه کامپایلر بتواند جلوی اشتباهات سهوی شما در بکارگیری  برخی فیلدها رو بگیره (که این مدل اشتباه فوق العاده نادر هست)؛ و دلیل دیگر اینکه سایر برنامه‌نویس‌ها موقع خواندن کدها، متوجه منظور شما بشن. مثلا متوجه بشن که شما خواسته ات در هنگام نوشتن کد این بوده که خارج از فلان محدوده از فلان فیلد استفاده نشود.

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

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

متاسفانه برخی زبان‌های معروف OOP مثل جاوا یا سی پلاس پلاس، تا سال‌ها یک سیستم ماژول درست حسابی نداشتند و باعث شدند Access modifier ها در ذهن برنامه‌نویس‌ها مترادف با Encapsulation و کدهای ماژولار بشوند؛ به این شکل که در نبود اون‌ها، اصلا هیچ تصوری از اینکه Encapsulation چیست و قرار است طی آن چه اتفاقی بیفتد ندارند!

در زبانی که دارای یک سیستم ماژول خوب است، موضوع Access modifier ها چیزی هست که جزو مکانیزم‌های مربوط به سیستم ماژول اون زبان هستند. در این مدل زبان‌ها این مکانیزم‌ها جزو قابلیت‌های کمکی در زمینه دسته بندی و طبقه بندی فیزیکی کدها هستند (در کنار کمک به سایر برنامه‌نویسان در زمینه خوانایی) و باعث میشن کمتر این شبهه در ذهن برنامه‌نویس پیش بیاد که به صرف استفاده از این برچسب‌ها، داره عمل کپسوله سازی رو انجام میده.

<Amirreza Gh/>