Menu
Coddy logo textTech

Bağımlılığın ters çevrilmesi

Coddy'nin Clean Code - Python ile daha iyi kod yazın kursunda ders 26 / 28.

"Soyutlamalara bağlı kalın, somutlamalara [değil]."

İlkeyi ihlal eden bir örnek gösterelim,

class LocalStorage:
	def save(self, key, value):
		print("Saved, " + key + ":" + value)

LocalStorage sınıfı anahtar ve değer çiftini kaydeder.

Şimdi LocalStorage'ı kullanan başka bir ana sınıfımız var,

class App:
	def start(self, key, value):
		storage = LocalStorage()
		storage.save(key, value)

LocalStorage somut bir uygulamadır ve App ona bağımlıdır!

Daha iyi bir yol, bir arayüz (soyut sınıf) oluşturmak olacaktır,

from abc import ABC, abstractmethod


class Storage(ABC):
	@abstractmethod
	def save(self):
		pass

Ve sonra somut uygulama yerine arayüzün bir örneğini kullanın. 

challenge icon

Görev

Kolay

Size neredeyse tamamlanmış bir kod verildi, Storage soyut sınıfını ekleyin.

Uygulamadan sonra, örneğin CloudStorage gibi başka bir somut sınıfa geçiş yapmanın kolay olduğunu fark edin...

Kendin dene

from abc import ABC, abstractmethod


# your code here


class LocalStorage(Storage):
	def save(self, key, value):
		print("Saved, " + key + ":" + value)


class App:
	def __init__(self, storage):
		self.storage = storage

	def start(self, key, value):
		storage.save(key, value)


if __name__ == "__main__":
	storage = LocalStorage()
	app = App(storage)
	key = input()
	value = input()
	app.start(key, value)

Clean Code - Python ile daha iyi kod yazın bölümündeki tüm dersler