Android Corner
Android Corner
خواندن ۲ دقیقه·۱ سال پیش

YAGNI, DRY and KISS principles

Android Corner


?

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

استفاده از سه اصل YAGNI, KISS و DRY ما رو به کدی تمیز، ساده و قابل‌فهم‌ می‌رسونه و مهم‌تر از همه اینه‌که نمی‌ذاره درآینده مورد عنایت برنامه‌نویس‌های دیگه قرار‌بگیریم⁦(:

ی: DRY

مخفف: “Don’t Repeat Yourself”. یادتون باشه هروقت دارید یه کد تکراری می‌نویسید یه جای کار اشتباهه. پس هروقت به‌کد تکراری بَرخوردید اونو به یک موجودیت، entity یا functionality واحد تبدیل کنید. مثلا تو مثال پایین، دوبار یه چیز رو تکرار کردیم:

// Without DRY class LoginActivity : AppCompatActivity() {   private fun validateInput(username: String, password: String): Boolean {     if(username.isEmpty()) {       return false     }     if(password.length < 6) {       return false     }     return true   }   fun onLoginClick() {     val username = usernameInput.text     val password = passwordInput.text     if(!validateInput(username, password)) {       showError(&quotInvalid input&quot)       return     }     // login user   }   fun onSignupClick() {     val username = usernameInput.text     val password = passwordInput.text     if(!validateInput(username, password)) {       showError(&quotInvalid input&quot)       return     }     // signup user   }

پس میایم اون کد رو به یک functionality توی یک مکان واحد تبدیل میکنیم. اینجوری:

// With DRY principle class LoginActivity : AppCompatActivity() { private fun validateInput(username: String, password: String): Boolean {   // validation logic } private fun validateAndLogin(username: String, password: String) {   if (!validateInput(username, password)) {     showError(&quotInvalid input&quot)     return   }   // login user } private fun validateAndSignup(username: String, password: String) {   if (!validateInput(username, password)) {     showError(&quotInvalid input&quot)     return   }   // signup user } fun onLoginClick() {   val username = usernameInput.text   val password = passwordInput.text   validateAndLogin(username, password) } fun onSignupClick() {   val username = usernameInput.text   val password = passwordInput.text   validateAndSignup(username, password) }

د: KISS

مخفف: “Keep It Simple, Stupid”. این اصل میگه سعی کنید همیشه کدهای ساده و قابل‌فهم بنویسید چون هرچقدر‌ که کدتون ساده‌تر باشه نگهداری‌اش درآینده ساده‌تره.


?

س: YAGNI

مخفف: “You Aren’t Gonna Need It”. این اصل میگه تمرکزتون رو روی نیازهای فعلی محصول بزارید. هرچیز اضافی تو پروژه، ناقض این اصله. مثلا تو اندروید، نمی‌دونم چه‌کاریه که همه می‌خوان از معماری MVVM پیروی کنن. شما میتونین یه پروژه کوچیک رو با MVP پیاده‌سازی کنین. بعضی پروژه‌ها اصلا معماری نیاز ندارن، فرض کنین یه پروژه‌ای دارید که می‌خواین 4 تا request بزنین به سرور، خب برای این پروژه چرا باید بیایم کارای اضافی انجام بدیم مثل ساختن repository و....


?

امیدوارم این اصل‌ها رو یادگرفته باشید و از این به‌بعد بتونید تو پروژه‌هاتون استفاده کنید.

کانال:Android Corner / ایمیل: cornerdroid@gmail.com

اینجا جاییکه در مورد مسائل و اخبار اندرویدی حرف میزنیم. cornerdroid@gmail.com / کانال: https://t.me/AndroidCorner
شاید از این پست‌ها خوشتان بیاید