ANTI-PATTERNS
Hard Code, Magic number, Magic String Anti-pattern leri Nedir ?
Özellikle kodlama yaparken bazen sabit sayılar ve sabit metinler kullanırız fakat bu kullanımların daha sonradan kodun anlaşılmasına ve tekrar tekrar kullanmasının getirdiği bir takım problemler ile karşılaşırız.
Yazılım geliştirmede karşımıza çıkan problemli durumlardan bir taneside
- Hard Code
- Magic Number
- Magic String
dediğimiz durumdur. Sabit veya bir anlamı olan rakam veya metinleri direk kodun içerisinde bir sabite atamadan kullanmaktır.
Bu durum ileride hem okunmayı, yani kodun anlaşılırlığını, hemde farklı yerlerde aynı magic rakam ve metinlerin tekrar tekrar kullanılmasından kaynaklı kod tekrarına neden olur.
const calculateArea =(radius)=> 3.14 * radius * radius
Burada 3.14 bir magic number olarak karşımıza çıkar. Halbuki burada PI rakamından bahsediyoruz. Aşağıdaki gibi bir kullanım kodun daha anlaşılabilir olmasını sağlar.
const PI= 3.14
const calculateArea =(radius)=> PI * radius * radius
Aynı durum metinler içinde geçerli . Metinleri bu şekilde kullanmak kodun içerisinde bu metinlerin gerçek anlamlarını kaybetmesine bazen yanlış yazılıp hata çıkmasına bile neden olabilir.
public class User {
private String userType;
public void setUserType(String type) {
if ("admin".equals(type)) {
...
} else if ("user".equals(type)) {
...
}
}
}
Bu kısımda bunun yerine String sabit atayabiliriz
public class User {
public static final String ADMIN_TYPE = "admin";
public static final String USER_TYPE = "user";
private String userType;
public void setUserType(String type) {
if (ADMIN_TYPE.equals(type)) {
...
} else if (USER_TYPE.equals(type)) {
...
}
}
}
Veya daha iyisi Enum kullanmaktır.
public class User {
public enum UserType {
ADMIN,
USER
}
private UserType userType;
public void setUserType(UserType type) {
this.userType = type;
switch (type) {
case ADMIN:
break;
case USER:
break;
}
}
}
İlk duruma göre kodu nasıl daha anlaşılır hale getirdiğimizi görebilirsiniz. Bu gibi kodun içerisinde anlamını bilmediğimiz rakam ve metinlerden olabildiğince kurtulmaya çalışın.
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.