Android Corner
سناریوهای کمی هستن که در نگاه اول میتونه حل کردنشون سخت باشه. ولی چرا اون سناریوها رو پیچیدهتر میکنیم؟!
استفاده از سه اصل YAGNI, KISS و 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("Invalid input") return } // login user } fun onSignupClick() { val username = usernameInput.text val password = passwordInput.text if(!validateInput(username, password)) { showError("Invalid input") 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("Invalid input") return } // login user } private fun validateAndSignup(username: String, password: String) { if (!validateInput(username, password)) { showError("Invalid input") 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) }
مخفف: “Keep It Simple, Stupid”. این اصل میگه سعی کنید همیشه کدهای ساده و قابلفهم بنویسید چون هرچقدر که کدتون سادهتر باشه نگهداریاش درآینده سادهتره.
مخفف: “You Aren’t Gonna Need It”. این اصل میگه تمرکزتون رو روی نیازهای فعلی محصول بزارید. هرچیز اضافی تو پروژه، ناقض این اصله. مثلا تو اندروید، نمیدونم چهکاریه که همه میخوان از معماری MVVM پیروی کنن. شما میتونین یه پروژه کوچیک رو با MVP پیادهسازی کنین. بعضی پروژهها اصلا معماری نیاز ندارن، فرض کنین یه پروژهای دارید که میخواین 4 تا request بزنین به سرور، خب برای این پروژه چرا باید بیایم کارای اضافی انجام بدیم مثل ساختن repository و....
امیدوارم این اصلها رو یادگرفته باشید و از این بهبعد بتونید تو پروژههاتون استفاده کنید.
کانال:Android Corner / ایمیل: cornerdroid@gmail.com