Test

Javascript Best Practices

Bu makalede, JavaScript kodlarını daha az satırda veya daha güvenli bir şekilde nasıl yazabileceğimizi inceleyeceğiz. Bu sayede, takım çalışması içinde bulunuyorsak, kodun okunabilirliğini ve geliştirilebilirliğini artırmanın yollarını öğrenebiliriz. Makalenin devamındaki en iyi uygulamaların dikkate alınması önemlidir.

İçerik göster

Javascript Best Practices

Javascript Best Practices

Bu makalede, JavaScript kodlarıyla ilgili dolu dolu best practices’leri paylaşacağım. Konuya hızlı bir giriş yaparak makaleye hemen başlayalım, ancak detayları da ihmal etmeyecek şekilde inceleyeceğiz.

Array

Bir diziyi yeniden boyutlandırma

Bu örnekte 6 değerin yer aldığı bir array’in boyutunu 2’ye düşürüyoruz.

let array = ["Js", "Py", "C++", "Java", "Csharp", "Dart"]
array.length = 2
console.log(array) //["Js", "Py"]

İç içe array’lerin tek array’e dönüştürülmesi

Belirleyeceğiniz boyutta array oluşturma

const array = Array(9).fill(null)

Dizilerin birleştirilmesi

let arr1 = [20, 30];
 
// Uzun yöntem
let arr2 = arr1.concat([60, 80]); // [20, 30, 60, 80]
 
// Kısa yöntem
let arr2 = [...arr1, 60, 80]; // [20, 30, 60, 80]

For loop

JS’de farklı farklı döngü yöntemleri bulunmakta, bir dizide döngü yapmak için genellikle for döngüsünü kullanırız. Diziler arasında yineleme yapmak için for… of döngüsünü de kullanabiliriz. Her değerin dizinine erişmek için ise for… in döngüsünü kullanabiliriz.

Ayrıca “For… in” döngüsünü kullanarak, nesne özellikleri üzerinde döngü kurabiliriz.


String

Bir dizeyi birkaç kez tekrarlama

Bir dizeyi belirli bir süre boyunca tekrarlamak için genellikle bir for döngüsü kullanılır. Ancak, bu işlemi daha kısa bir şekilde yapmak için repeat() yöntemini kullanabiliriz.

Dizeden karakter alma

Çok Satırlı Dizeler (Multi-line String)

Çok satırlı dizeleri oluşturmak için genellikle + operatörünü ve yeni satıra geçiş \n operatörünü kullanırız. Ancak, backticks (`) kullanarak bu işlemi daha kolay bir şekilde gerçekleştirebiliriz.

// Uzun yöntem
console.log('JavaScript, sıkça kısaltılmış olarak JS, \n' + 'ECMAScript spesifikasyonuna uygun bir \n' + 'programlama dilidir. JavaScript yüksek seviyeli,\n' + 'genellikle anında derlenen ve çok paradigmaya sahip.');

// Kısa yöntem
console.log(`JavaScript, sıkça kısaltılmış olarak JS, ECMAScript spesifikasyonuna uygun bir programlama dilidir. JavaScript yüksek seviyeli, genellikle anında derlenen ve çok paradigmaya sahip.`);

Yukarıda uzun ve kısa yöntemleri karşılaştırdık. Backticks kullanarak çok satırlı dizeleri daha okunabilir bir şekilde oluşturabiliriz.

Template Literals

String değerlerini değişkenlerle birleştirmek için genellikle + operatörünü kullanırız. Ancak ES6 Şablon Dizgileri (Template Literals) ile bunu daha basit bir şekilde yapabiliriz.

// Uzun yöntem
console.log('Aranan numaradan ' + number + ' saat ' + time + ' itibariyle bir çağrı kaçırdınız.');

// Kısa yöntem
console.log(`Aranan numaradan ${number} saat ${time} itibariyle bir çağrı kaçırdınız.`);

Matematik

String değerleri sayılara dönüştürme

Bir string değeri sayıya dönüştürmek için parseInt ve parseFloat gibi yöntemler vardır. Bunu, dize değerinin önüne (+) koyarak da yapabiliriz.

// Uzun yöntem
let total = parseInt('453');
let average = parseFloat('42.6');
 
// Kısa yöntem
let total = +'453';
let average = +'42.6';

Üs alma

Bir sayının üssünü bulmak için Math.pow () yöntemini kullanabiliriz. Bir başka yöntem de çift yıldız operatörünü (**) kullanmak.

// Uzun yöntem
const power = Math.pow(4, 3); // 64
 
// Kısa yöntem
const power = 4**3; // 64

Sayıları aşağıya yuvarlama

Sayıları aşağıya yuvarlamak için Math.floor yöntemini kullanırız. (~~) operatörü ile de aynı işlem yapılabiliyor.

// Uzun yöntem
const floor = Math.floor(6.8); // 6

// Kısa yöntem
const floor = ~~6.8; // 6

Not: Math.floor() yöntemi sayı ne olursa olsun aşağı yuvarlar.

Dizideki maksimum ve minimum sayıları bulmak

Dizilerdeki maksimum ve minimum değerleri bulmak için genelde döngü yapabilir ya da Array.reduce () yöntemini kullanabiliriz.

// Kısa yöntem
const arr = [2, 8, 15, 4];
Math.max(...arr); // 15
Math.min(...arr); // 2

Object

Dinamik nesne

ES6 ile birlikte, daha önce tanımladığımız değişkeni köşeli parantezler içerisine alarak nesne içerisinde dinamik olacak şekilde kullanabiliyoruz.

Obje oluşturma

Objeye sadece değişken adı vererek kısayolla obje oluşturulması sağlanabiliyor.

Çoklu koşul kontrolü (Multiple condition checking)

Çoklu değer eşleştirme için tüm değerleri diziye koyabilir ve indexOf () yöntemini kullanabiliriz.

Değişken Bildirimi (Declaring variables)

// Uzun yöntem
let x;
let y = 20;

// Kısa yöntem
let x, y = 20;

// Kısa yöntem
let a, b, c;

Birden çok değişkene değer atama

Destructuring özelliği ile bir satırda birden çok değişkene değer atayabiliriz.
// Uzun yöntem
a = 5;
b = 8;
c = 12;

// Kısa yöntem
let [a, b, c] = [5, 8, 12];

İki değişkeni değiştirme (Swap two variables)

İki değişkenin değerlerini destructing yardımı ile kolayca değiştirebiliriz.
let x = 'Hello', y = 55;
 
// Uzun yöntem
const temp = x;
x = y;
y = temp;
 
// Kısa yöntem
[x, y] = [y, x];
 
// Çıktı:
// x: 55
// y: Hello

Ternary operatör kullanarak değişken değerini ayarlama

❌
a > b ? foo = 'apple' : foo = 'ball';
✔️
foo = a > b ? 'apple' : 'ball';

Belirli bir nesne özelliğine koşullu olarak aynı değeri atama

❌
c > d ? a.foo = 'apple' : a.bar = 'apple'; 
✔️
a = { [c > d ? 'foo' : 'bar']: 'apple' };

Birden çok değişkeni dışa aktarma

❌ 
export const foo;
export const bar;
export const kip; 

✔️ 
export const foo, bar, kip;

Nesne özelliklerinden değişkenlerin bildirilmesi ve atanması

❌ 
const a = foo.x, b = foo.y; 

✔️ 
const { ['x']: a, ['y']: b } = foo;

Dizi indekslerinden değişkenlerin bildirilmesi ve atanması

❌ 
let a = foo[0], b = foo[1]; 

✔️ 
let [a, b] = foo;

DOM’dan birden fazla öğe alma

❌ 
const a = document.getElementById('a'), 
      b = document.getElementById('b'), 
      c = document.getElementById('c'); 
      d = document.getElementById('d'); 

✔️ 
const elements = {}; 
['a', 'b', 'c', 'd'].forEach(item => elements = { ...elements, [item]: document.getElementById(item) }); 

const { a, b, c, d } = elements; /* Bu işlem için element ID'leriniz geçerli bir JavaScript değişken adı olmalı ve bu elementleri sakladığınız değişkenlerin adları, o elementin ID'siyle eşleşmelidir. Bu, isimlendirme tutarlılığı ve erişilebilirlik açısından iyidir. */

Basit koşullar için mantıksal operatörleri kullanın

❌
if (foo) { 
   doSomething(); 
}
✔️ 
foo && doSomething();

Parametreleri koşullu olarak geçirme

❌
if(!foo){
   foo = 'apple';
}
bar(foo, kip);
✔️
bar(foo || 'apple', kip);

Bir sürü 0’la uğraşmak

❌
const SALARY = 150000000, TAX = 15000000;
✔️
const SALARY = 15e7, TAX = 15e6;

Aynı değeri birden fazla değişkene eşitleme

❌
a = d;
b = d;
c = d;
✔️
a = b = c = d;

Console

Eğer console.log’u birden fazla kez tanımlıyorsanız ve bu satırları sürekli kullanacaksanız, kodu daha okunaklı hale getirmek için aşağıdaki kısa sözdizimi kullanabilirsiniz.

const { ['log']: c } = console; 
c("herhangi bir log");

Const

Tanımladığınız değişkenlerin sonradan tekrar yeni bir değer ile eşitlenme durumu yoksa bu durumda değişkeni tanımlarken const keyword’ü ile tanımlamanız ve sonrasında yanlışlıkla değişkeni ezmeniz durumunda sizi engelleyecek. Bu durumda size yol gösterici olacaktır.

const name = 'murat'
const surname = 'öner'

Bu noktada dikkat edilmesi gereken durum, JavaScript’te tarayıcı uyumluluklarına özen gösterilmesidir. Tarayıcı uyumluluğu hakkında gerekli bilgileri almak için şu adresi ziyaret edebilirsiniz: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const#Browser_compatibility

🌍 Javascript Best Practices Kaynakları

📃 Javascript Best Practices İle Benzer İçerikler

5/5 - (2 votes)

Murat Öner sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya Devam Edin