Photo by Muhammad Haikal Sjukri on Unsplash

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.

Onur Dayıbaşı
Architectural Patterns
2 min readJan 21, 2024

--

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.

--

--