Принципы и практики разработки ПО / Principles and practices of software development
Принципы и практики
разработки ПО
UML SOLID
SRP Single Responsibility Principle
OCP Open Close Principle
LSP Liskov Substitution Principle
ISP Interface Segregation Principle
DIP Dependency Injection Principle
Encapsulation
Inheritance
Polymorphism
AbstractionG.R.A.S.P.
Inversion of
Control
SOLID principles
S SRP
O OCP
L LSP
I ISP
D DIP
Single Responsibility Principle
Open-Close Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
Single Responsibility Principle
def download_clicks(date_from, date_to):
with Session() as session:
projects = session.get("http://search.2gis.one/projects")
with open("config.json") as cfg:
config = json.load(cfg)
downloader = DiggerDownloader("https://digger.2gis.ru", "user", "pass")
raw_clicks = downloader.download(date_from, date_to)
result_clicks = {}
for project_id, clicks in raw_clicks.items():
for object_id, count in clicks.items():
if object_id in result_clicks:
result_clicks[object_id] += config['factor'] * count
else:
result_clicks[object_id] = config['factor'] * count
return (result_clicks, projects)
Single Responsibility Principle
def download_clicks(date_from, date_to):
with Session() as session:
projects = session.get("http://search.2gis.one/projects")
with open("config.json") as cfg:
config = json.load(cfg)
downloader = DiggerDownloader("https://digger.2gis.ru", "user", "pass")
raw_clicks = downloader.download(date_from, date_to)
result_clicks = {}
for project_id, clicks in raw_clicks.items():
for object_id, count in clicks.items():
if object_id in result_clicks:
result_clicks[object_id] += config['factor'] * count
else:
result_clicks[object_id] = config['factor'] * count
return (result_clicks, projects)
Single Responsibility Principle
def download_clicks(date_from, date_to, downloader, config_path):
raw_clicks = downloader.download(date_from, date_to)
with open(config_path) as cfg:
config = json.load(cfg)
return make_clicks(raw_clicks, config['factor'])
def make_clicks(raw_clicks, factor):
result_clicks = {}
for project_id, clicks in raw_clicks.items():
for object_id, count in clicks.items():
if object_id in result_clicks:
result_clicks[object_id] += config['factor'] * count
else:
result_clicks[object_id] = config['factor'] * count
return result_clicks
SOLID principles
S SRP
O OCP
L LSP
I ISP
D DIP
Single Responsibility Principle
Open-Close Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
Testing
def download_clicks(date_from, date_to, downloader, config_path):
raw_clicks = downloader.download(date_from, date_to)
with open(config_path) as cfg:
config = json.load(cfg)
return make_clicks(raw_clicks, config['factor'])