🔵 عنوان مقاله
Revisiting Interface Segregation in Go
🟢 خلاصه مقاله:
این مطلب «Interface Segregation Principle (ISP)» را از منظر Go مرور میکند: مشتری نباید به متدهایی وابسته شود که از آنها استفاده نمیکند. در Go، راهکارهای رایج شامل ساختن رابطهای کوچک و رفتاری، تعریف رابطها در محل استفاده، «پذیرفتن interface و برگرداندن نوعهای concrete»، و الهام گرفتن از نمونههای استاندارد مثل io.Reader و io.Writer است.
مشکل وقتی پیش میآید که یک پکیج، رابطهای چاق و همهچیزدار صادر میکند؛ این کار تغییرات را سخت و پیادهسازیها را پر از متدهای بیمصرف میکند. بهتر است رابطهای کوچک را ترکیب یا embed کنیم، فقط وقتی واقعاً لازم است سراغ رابطهای بزرگ برویم، و از میانافزارها/adapterها برای سازگاری در مسیر ریفکتور کمک بگیریم.
راهبرد عملی: ابتدا پیادهسازیهای concrete بسازید، بعد بر اساس نیاز واقعی رابط استخراج کنید؛ مجموعهمتدها را کوچک نگه دارید، برای تست از فیک/ماک بهره ببرید، و APIها را تدریجی تکامل دهید. با وجود generics هم باید از تعمیم بیجا پرهیز کرد و رابطهای runtime را بر رفتار متمرکز نگه داشت. نتیجه پایبندی به ISP در Go، کدی سادهتر برای تست، نگهداشت و توسعه است؛ نکاتی که در تازهترین مطلب معرفیشده توسط Golang Weekly نیز برجسته شدهاند.
#Go #Golang #InterfaceSegregation #ISP #GoInterfaces #SoftwareDesign #Refactoring #GolangWeekly
🟣لینک مقاله:
https://golangweekly.com/link/176622/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Revisiting Interface Segregation in Go
🟢 خلاصه مقاله:
این مطلب «Interface Segregation Principle (ISP)» را از منظر Go مرور میکند: مشتری نباید به متدهایی وابسته شود که از آنها استفاده نمیکند. در Go، راهکارهای رایج شامل ساختن رابطهای کوچک و رفتاری، تعریف رابطها در محل استفاده، «پذیرفتن interface و برگرداندن نوعهای concrete»، و الهام گرفتن از نمونههای استاندارد مثل io.Reader و io.Writer است.
مشکل وقتی پیش میآید که یک پکیج، رابطهای چاق و همهچیزدار صادر میکند؛ این کار تغییرات را سخت و پیادهسازیها را پر از متدهای بیمصرف میکند. بهتر است رابطهای کوچک را ترکیب یا embed کنیم، فقط وقتی واقعاً لازم است سراغ رابطهای بزرگ برویم، و از میانافزارها/adapterها برای سازگاری در مسیر ریفکتور کمک بگیریم.
راهبرد عملی: ابتدا پیادهسازیهای concrete بسازید، بعد بر اساس نیاز واقعی رابط استخراج کنید؛ مجموعهمتدها را کوچک نگه دارید، برای تست از فیک/ماک بهره ببرید، و APIها را تدریجی تکامل دهید. با وجود generics هم باید از تعمیم بیجا پرهیز کرد و رابطهای runtime را بر رفتار متمرکز نگه داشت. نتیجه پایبندی به ISP در Go، کدی سادهتر برای تست، نگهداشت و توسعه است؛ نکاتی که در تازهترین مطلب معرفیشده توسط Golang Weekly نیز برجسته شدهاند.
#Go #Golang #InterfaceSegregation #ISP #GoInterfaces #SoftwareDesign #Refactoring #GolangWeekly
🟣لینک مقاله:
https://golangweekly.com/link/176622/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Redowan's Reflections
Revisiting interface segregation in Go
Object-oriented (OO) patterns get a lot of flak in the Go community, and often for good
reason.
Still, I’ve found that principles like SOLID, despite their OO origin, can be useful
guides when thinking about design in Go.
Recently, while chatting with a few…
reason.
Still, I’ve found that principles like SOLID, despite their OO origin, can be useful
guides when thinking about design in Go.
Recently, while chatting with a few…
👍2