Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
August 13, 2022 02:03 pm GMT

Daha Temiz Kod Yazmak in pular

Kod'larmz daha okunabilir ve temiz hale getirmek iin bir ok makaleden derlenmi kolay kullanlabilir ve ksa ipular :)

1. Erken Dn(Return Early) Tasarm Modelini Kullann:

function saveItem(item) {  if (item != null) {    console.log("Validating");    if (item.isValid()) {      console.log("Saving item");      item.save();    }}

Yukardaki rnekte yanl bir ey yok ancak i ie if fadeleri kullanarak yuvalama yapmak yerine item deeri null ise veya valid deilse early return (erken dn) kullanarak aadaki gibi fonsiyondan kmasn salayabiliriz.

function saveItem(item) {  if (item == null) return;  console.log("Validating");  if (!item.isValid) return;  console.log("Saving item");  item.save();}

2. Fonksiyon Parametreleri in Object Destructuring (Nesne Ykm) Kullann

Bir nesneyi parametre olarak alan ve yeni bir deer dndrmek iin o nesne zerinde bir tr ilem gerekletiren bir fonksiyonumuz olduunu varsayalm. Nesne yok etmeyi(object destructuring) kullanmadan yle bir ey elde edebiliriz:

function getFullName(person) {  const firstName = person.firstName;  const lastName = person.lastName;  return `${firstName} ${lastName}`;}

Bu kullanm ekli gerekten ihtiyacmz olmadnda da firstName ve lastName olmak zere iki geici referans oluturur.

Bunu uygulamann daha iyi bir yolu, nesne ykmn( object destructuring) kullanmaktr. Bir satrda hem firstName hem de lastName deerlerini almak iin person nesnesini yok(destruct) edebiliriz:

function getFullName(person) {  const { firstName, lastName } = person;  return `${firstname} ${lastName}`;}

Ve parametreleri destruct ederek bu kodu daha zarif bir hala getirebiliriz. :)

function getFullName(person) {  const { firstName, lastName } = person;  return `${firstname} ${lastName}`;}

3. Pure (Saf) Fonksiyonlar Kullanarak Yan Etkilerden (Side Effects) Kann:

Fonksiyon yazarken, o fonksiyonun dndaki deikenleri deitirmekten kanmak en iyisidir.

let items = 5;function changeNumber(number) {  items = number + 3;  return items;}changeNumber(5);

Bu fonksiyonu ardmzda item deikeninin deerini deitirdiimiz iin bu kullanm istenmeyen durumlara yol aar.

Bunun yerine pure(saf) fonksiyon kullanarak fonksiyonu aadaki gibi yeniden yazabiliriz.

function addThree(number) {  return number + 3;}

Harici deikeni kaldrdmz iin fonksiyonun davran artk tamamen ngrlebilir hale geldi.

4. SRP (Tek Sorumluluk lkesi)

Sadece bir ey yapan ksa fonksiyonlar yazn.
Bu kodun, i ie yapya sahip olmamas veya ikiden fazla girinti dzeyine sahip olmamas gerektii anlamna gelir.

Yanl kullanm:

function signUpAndValidate() {}

Yerine:

function signUp() {}function validate() {}

5. Anlaml Deiken ve Fonksiyon Adlar Kullann:

** Fonksiyonlar eylemleri gerekletirir bu nedenle fonksiyonlarnz adlandrrken filleri kullann**

// badfunction passwordValidation() {}// goodfunction validatePassword() {}

Diziler iin oul kullann

const animal = ["cat", "dog", "bird"];const animals = ["cat", "dog", "bird"];

Callback fonksiyonlarnda yineleme yaparken anlaml isimlendirmeler kullann

animals.forEach((a) => {console.log(a);});// do thisanimals.forEach((animal) => {console.log(animal);});

6. Kodunuzu yeniden kullanlabilir ve anlalr klmak iin benzer deikenleri ve fonksiyonlar gruplayn.

7. DRY lkesi:

Kendinizi tekrar etmeyin. Ayn kodu birden ok yerde kullanmanz gerekiyorsa onu bir fonksiyona dntrn.

8. Okunabilir Kod Oluturmak in Bo Satrlar Kullann

function saveItem(item) {  if (item == null) return;  console.log("Validating");  if (!item.isValid) return;  console.log("Saving item");  item.save();}function Delete(item) {  console.log("Delete item");  item.delete();}
function saveItem(item) {  if (item == null) return;  console.log("Validating");  if (!item.isValid) return;  console.log("Saving item");  item.save();}function Delete(item) {  console.log("Delete item");  item.delete();}

9. Birim(Unit) Testini kullann ve Teste Dayal Gelitirme(TDD-Test Driven Development) Uygulayn:

Unit testleri sayesinde kodda deiiklik yapmak ve hatalar azaltmak daha kolay hale gelir.

Yazlm gelitirmede, gereksinimlerin belirli test senaryolarna dntrld ve ardndan yazlmn yeni testleri geecek ekilde gelitirildii Test Odakl Gelitirme (TDD) ad verilen bir sre vardr.

Tasarm yap
Testi yaz
Gelitirmeyi yaz
Testi yap

Image description

TDD sreci aadaki admlar ierir;

Belirtilen gereksinimlere gre yazlm gelitirici bir test senaryosu yazar
Bu testler gerekletirilir ve bir zelliin gelitirilmesinden nce yazld iin baarsz olmas beklenir
Gelitirme ekibi tarafndan testin baaryla gemesi iin kodlama yaplr
Btn testlerin baarl olmas salanr
Kod tekrar gzden geirilir ve dzenlenir. yiletirme veya temizleme yaplr

10. Gereksiz Yorumlar Yazmaktan Kann

Kodunuzda gereksiz yorumlardan kanmak iin deikenler, ilevler veya dosyalar iin anlaml adlar kullann.

Bir yorum eklemek zereyken kendinize u soruyu sorun: "Bu yoruma gerek kalmayacak ekilde kodu nasl iyiletirebilirim?" Kodu gelitirin ve ardndan daha da net hale getirmek iin belgeleyin.
-Steve McConnell

11. Refaktr

Bir kodu yeniden dzenlemek gerekten iyi bir beceridir, neler olup bittiinin farknda olmanz salar ve yeniden dzenleme yaparken daha iyi hale gelir, bir sre sonra kodunuza geri dnmek ve gelitirmek her zaman iyi bir uygulamadr.

12. Tm Deiken Bildirimlerinizi Bir Arada Tutun:

Projeleriniz bymeye baladnda, snflarnzn muhtemelen birok deikeni olacaktr. lk olarak, tm deiken bildirimlerinizi sayfann en stnde veya en azndan bir yerde bir arada tutmalsnz - bu, her trl aramay hzlandrr.

13. Doru Mimariyi Sein

Projelerinizi oluturmak iin kullanabileceiniz birok paradigma ve mimari vardr. Bu ipucunun, en iyisini semekle ilgili deil, ihtiyalarnz iin doru olan semekle ilgili olduuna dikkat edin.

"Gereksinimler ve tasarm olmadan programlama, bo bir metin dosyasna hata ekleme sanatdr."
Louis Srygley

rnein, Model-View-Controller (MVC) modeli, web gelitirmede poplerdir nk kodunuzu dzenli tutmaya yardmc olur ve bakm abalarn en aza indirecek ekilde tasarlanr.

14. Sihirli Say:

Sihirli bir say, net bir anlam olmayan bir say atadmz anlamna gelir. Bazen belirli bir ama iin bir deer kullanrz ve deeri anlaml bir deikene atamayz. Bu durum kodunuzu okuyan kiinin bu saynn amacn anlamamasna neden olur.

//Bad practicefor(let i = 0; i < 50; i++){    //do something}//Good practicelet NUMBER_OF_STUDENTS= 50for(let i = 0; i < NUMBER_OF_STUDENTS; i++){    //do something}

15. Tasarm Kalplarn Kullann

Image description

SOLID Tasarm lkeleri

Single Responsibility Principle (Tek Sorumluluk lkesi): Bir snfn yalnzca bir ii olmaldr

Open Closed Principle (Ak Kapal lkesi): Bir snf geniletmeye ak ancak deiiklie kapal olmaldr.

Liskov Substitution Principle (Liskov Deitirme lkesi): Bir programdaki nesneler, programn doruluunu deitirmeden alt trlerinin rnekleriyle deitirilebilir olmaldr.

Interface Segregation Principle (Arayz Ayrtrma lkesi): Bir istemci asla kullanmad bir arayz uygulamaya zorlanmamaldr.

Dependency Inversion Principle (Bamllk Tersine evirme Prensibi): Yksek seviyeli modl, dk seviyeli detaya deil, yksek seviyeli genellemeye dayanmaldr.

Dier Tasarm Kalplar

Composing Objects Principle (Nesneleri Oluturma lkesi): Snflar, kaltm(inheritance) yerine toplama yoluyla kodun yeniden kullanmn salamaldr.

Demeter Yasas / Principle of Least Knowledge(En Az Bilgi Prensibi): Snflar mmkn olduunca az sayda dier snf bilmeli ve bunlarla arayz oluturmaldr.

Abstraction (Soyutlama): Yalnzca ilgili bilgileri gstererek basitletirin

Encapsulation (Kapslleme): Nitelikleri ve davranlar bir nesnede gruplama ve gerektiinde zellikleri aa karma.
Bir grup kod sklkla birlikte kullanlyorsa, kapsllmeyi kullann.

Decomposition (Ayrtrma): Bir varl ayr ayr uygulanabilecek paralara ayrma
Bir snf ok bykse ayrtrma(decomposition) kullann.

Generalization (Genelleme): Baka yerlerde yeniden kullanlabilecek snflarn ortak zelliklerini arpanlarna ayrma.
Ayn kod, kk deiikliklerle birlikte, kod tabannn birden ok blmnde kullanlyorsa, genellemeyi kullann.

Coupling and Cohesion: Gevek bal modller daha az bamldr ve yeniden kullanm daha kolaydr, yksek uyum ise net bir amac olan ve olmas gerekenden daha karmak olmayan bir modl tanmlar.
Bir yerdeki deiiklik dier birok parada deiiklie neden oluyorsa, bu sk balant anlamna gelir.

Inheritance (Kaltm): Alt snflarn bir st snftan miras ald veya bir arabirim araclyla uygulayan nitelik veya davranlar.

Information Hiding(Bilgi Gizleme): Modller yalnzca yapmas gereken bilgilere eriebilmelidir.

Information Hiding (Endielerin Ayrm): Farkl modllerde farkl endieler olmaldr

KISS principle: KISS ilkesi, ou sistemin karmak hale getirilmek yerine basit tutulursa en iyi ekilde altn belirtir; bu nedenle tasarmda basitlik temel hedef olmal ve gereksiz karmaklktan kanlmaldr.

16. Sandi Metzs Kurallar

Class'lar da 100 satrdan fazla kod olamaz
Methodlar ve fonksiyonlarda 5 satrdan fazla kod olamaz
Bir method'a
en fazla 4 parametre iletin
Controller'lar yalnzca bir nesneyi balatabilir

"Bir gelitirici olarak, yalnzca bir eyleri teslim etme konusunda endielenmememiz gerektiini unutmayn. Bundan daha fazlasdr; bu, kodu desteklemesi gereken bir sonraki gelitiriciyi dnmekle ilgilidir. Bu yzden ltfen bir sonraki projenizde bulmak istediiniz kodunuzu okunakl bir ekilde brakn."

Resources :)
Many thanks to
Dominic Duke
Lauren Alexander
Claudia Sanjuan
Steve McConnell
Ahmet Cokgungordu
Awedis Keofteian
Amal Hasni
Kay Jan Wong
Joel Lee
Shoaib Mehedi
and
https://www.geeksforgeeks.org/7-tips-to-write-clean-and-better-code-in-2020/
https://www.pluralsight.com/blog/software-development/10-steps-to-clean-code?clickid=SKFQgUxRexyNT4OXXR3ok2jQUkDyfpWv5QPMyQ0&irgwc=1&mpid=29332&aid=7010a000001xAKZAA2&utm_medium=digital_affiliate&utm_campaign=29332&utm_source=impactradius
https://en.wikipedia.org/wiki/SOLID
https://en.wikipedia.org/wiki/KISS_principle


Original Link: https://dev.to/gulsenkeskin/daha-temiz-kod-yazmak-icin-ipuclari-5dia

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To