Upload
-
View
48
Download
3
Embed Size (px)
Citation preview
Грязный код• Увеличивает количество ошибок в приложении • Снижает производительность и скорость разработки
• Увеличивает стоимость поддержки и дальнейших изменений
Чистый код«Чистый код прост и прямолинеен. Чистый код читается, как хорошо написанная проза.
Чистый код никогда не затемняет намерения проектировщика; он полон четких абстракций и простых линий передачи управления»Грэди Буч
Передают намерения программиста
NSObject *dataObject = [self dataObjectWithRow:indexPath.row];
CustomLabel *customLabel = [CustomLabel new];
id<SectionDescription> sectionDescription = [self sectionDescriptionByRow:indexPath.row];
ScrollableLabel *ticker = [ScrollableLabel new];
Не дают ложную информацию
NSArray *usersList = [NSArray new];
NSArray *usersList = [NSDictionary new];
Длинна имениДолжна соответствовать размеру его области видимости
// StyleDefines.hstatic CGSize const TransportSectionCellIconSize = {18.0f, 18.0f};
// StyleDefines.hstatic CGSize const iconSize = {18.0f, 18.0f};
Соблюдайте порядок слов и окончания
NSArray *dreamsList;pagesCount или countOfPages
NSArray *dreamList;countPage;
Прилагательное+Существительное
Имена классов• Состоят из существительных, прилагательных и их комбинаций
• Отражают суть намерений
ScrollableLabel *ticker;
CustomCellBackground *backgorund;Users
Одно слово для одной концепции
Points, Coins, Rewards, StarsAppointment, record, registration, reservation
Часто используемые антонимы
add/remove increment/decrement
open/close begin/end
insert/delete show/hide
create/destroy lock/unlock
source/target first/last min/max start/stop get/put
next/previous up/down get/set
old/new
Конвенции именованияNYTimes Style Guide https://github.com/NYTimes/objective-c-style-guide
Raywenderlich Style Guide https://github.com/raywenderlich/objective-c-style-guide
Разумные причины создать метод
• снижение сложности; • формирование понятной
промежуточной абстракции; • предотвращение дублирования
кода; • поддержка наследования; • сокрытие очередности действий; • сокрытие операций над
указателями; • улучшение портируемости; • упрощение сложных булевых
проверок; • повышение быстродействия
• изоляция сложности; • сокрытие деталей реализации; • ограничение влияния
изменений; • сокрытие глобальных данных; • создание центральных точек
управления; • облегчение повторного
использования кода; • выполнение специфического
вида рефакторинга.
Side эффекты функций- (BOOL)isValidEmail:(NSString *)email - andPassword:(NSString *)password { if ([email isEqualToString:@""] || [email isEqualToString:@""]) { return NO; } self.session = [PMSession sessionWith:email password:password]; return YES; }