Владимир Селюх
Разработчик ПО
Принцип единственной ответственности (The Single Responsibility Principle)
Принцип открытости/закрытости (The Open Closed Principle)
Принцип подстановки Барбары Лисков (The Liskov Substitution Principle)
Принцип разделения интерфейса (The Interface Segregation Principle)
Принцип инверсии зависимостей (The Dependency Inversion Principle)
class Email:
body = None
def __init__(self, ip_address):
self.sender = smtp.init(ip_address)
def prepare_customer(self, text):
self.body = add_customer_header_footer(text)
def prepare_vip_customer(self, text):
self.body = add_vip_customer_header_footer(text)
def send(self, addr):
self.sender.send(addr, self.body)class EmailSender:
body = None
def __init__(self, ip_address):
self.sender = smtp.init(ip_address)
def send(self, addr, cc = None):
if cc == None:
self.sender.send(addr, self.body)
self.sender.send(addr, self.body, cc=cc)
class EmailPreparer():
def prepare_customer(self, text):
return add_customer_header_footer(text)
def prepare_vip_customer(self, text):
return add_vip_customer_header_footer(text)class Gif():
def __init__(self, height, width):
self.height, self.width = height, width
class Jpeg():
def __init__(self, height, width, someshit):
self.height = height
self.width = width
self.someshit = someshit
def get_images_size_sum(images_list = None):
sum = 0
for img in images_list:
if isinstance(img, Gif):
sum += img.height*img.width*3
if isinstance(img, Gif):
sum += img.height*img.width*12
else:
# HZ some magic shit
sum += img.height*img.width
return sumclass Gif():
def __init__(self, height, width):
self.height, self.width = height, width
def get_size(self):
return self.height*self.width*3
class Jpeg():
def __init__(self, height, width, someshit):
self.height = height
self.width = width
self.someshit = someshit
def get_size(self):
return self.height*self.width*12
def get_images_size_sum(images_list = None):
sum = 0
for img in images_list:
sum += img.get_size()
return sumclass SomeController():
def __before__(self, request):
request.size = request.size+2
do_something(request)
def api_index(self, request):
do_something_else(request)
class MyOwesomeConroller(SomeController):
def __pre_before__(self, request):
request.size = request.size+1
do_something(request)
def __before__(self, request):
super(MyOwesomeConroller, self).__before__()
class SomeController():
def __before__(self, request):
request.size = request.size+2
do_something(request)
def api_index(self, request):
do_something_else(request)
class MyOwesomeConroller(SomeController):
def __before__(self, request):
request.size = request.size+1
do_something_else(request)
super(MyOwesomeConroller, self).__before__()
class SomeController():
def base_api(self, document, is_jpg, is_ajax, is_json, is_sms):
if is_jpg:
return jpg(document)
elif is_ajax:
return ajax(document)
elif is_sms and not is_json:
return sms(document)
elif is_sms and is_json:
return json_sms_to_esputnic(document)
elif is_json:
return json(document)
else:
reborn areufuknkiddingme(document)
class SomeController():
def jpg_api(self, document):
return jpg(document)
def ajax_api(self, document):
return ajax(document)
def json_api(self, document):
return json(document)
def sms_api(self, document, is_json):
if not is_json:
return sms(document)
else:
return json_sms_to_esputnic(document)
class DBService(object):
"""DB"""
class AsteriskService(object):
"""Asterisk"""
class Client(object):
def __init__(self):
self.db_service = DBService()
self.asterisk_service = AsteriskService()
if __name__ == '__main__':
client = Client()
class DBService(object):
"""DB"""
class AsteriskService(object):
"""Asterisk"""
class Client(object):
def __init__(self, db, asterisk):
self.db_service = db
self.asterisk_service = asterisk
if __name__ == '__main__':
try:
db = DBService()
except:
log("Db is only a helper. No need")
db = None # no db its ok
try:
asterisk = AsteriskService()
except:
log("We can't work without Asterisk! So we must die")
raise
client = Client(db, asterisk)
10 км
10 км
10
Сумма
Характеристика исполнителя (множества вычисляющих элементов) в теории вычислимости, означающая возможность реализовать на нём любую вычислимую функцию. Другими словами, для каждой вычислимой функции существует вычисляющий её элемент (например, машина Тьюринга) или программа для исполнителя, а все функции, вычисляемые множеством вычислителей, являются вычислимыми функциями (возможно, при некотором кодировании входных и выходных данных). Wikipedia
1. Пишите за день свой язык программирования 2. Пишите на нем за ночь машину тьюринга 3. Пишите за неделю linux на нем .... 5. PROFIT!!!!!!!!!!!!!!
Но не сильно