- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
-(void)savePictureWithId:(NSString*)pictureId{ // pictureId - строка типа @"4629"
Picture * picture = [pictures objectForKey:pictureId]; // pictures - словарик, хранит какие то (не все) доступные объекты Picture
if(picture == nil)
return;
NSString * identif = picture.id; // id найденного объекта, который всегда содержит строку совпадающую с параметром pictureId
if((picture.viewed == NO) &&
(NO == [viewedPicIdsPack containsObject:identif])) // viewedPicIdsPack - специальный NSMutableArray для хранения Picture, причем которые не "viewed"
{
[viewedPicIdsPack addObject:identif]; // Про NSMutableSet не знаем, судя по проверке
}
} // При чем здесь "savePicture"?
К этой функции прилагается еще 5 кг спагетти-кода работы с этой кучей NSMutableArray на все случаи жизни (в функции еще не все такие контейнеры засветились)
Писал человек с 3+ года опыта коммерческой разработки.
krypt 20.12.2013 11:36 # 0
А спагеттикод - это нормальное состояние Objective-C
Вспомните хотя бы объявление shouldAutorotateToInterfaceOrientation, за появление которого фрагмент кода тут автоматом заплюсовывается, не смотря на остальное содержимое.
NAlexN 20.12.2013 19:23 # 0
А функция кеширования эта - не нормальная, картинки и так уже закешированы в другом контейнере в этом же классе.
Да, возможно по приведенному куску кода тяжело оцененить масштабы пи**ца, творящегося во всем модуле.
У класса Picture куча состояний, и в зависимости от состояния их добавляют в разные контейнеры, причем при смене состояния картинку надо удалить из одного контейнера и возможно добавить в другой - это ужасно, отследить все места, где это происходит очень тяжело, малейшая попытка что то отрефакторить привносит мигающие баги, потому что все это очень криво завязано на работу с сетью и показом в UITableView, малейшая промашка - и картинки по нужному indexPath уже нету.
Просто поверье, я работал на других проектах, частично написанных не мной, избежать спагегги кода на Objective-C вполне реально, и более того это зависит не от языка, а от прямо(криво)рукости программиста
krypt 23.12.2013 15:37 # 0
Видимо у нас совершенно разные понятия о спагетти-коде...
Вот классическая реализация, не добавить, не отнять (хотя некоторые умудряются)
По-моему, отличное спагетти. А то, что в примере - даже за 80 символов по ширине не вылезло :)
> А функция кеширования эта - не нормальная, картинки и так уже закешированы в другом контейнере в этом же классе.
Может быть там у вас картинки в память загружены, а сложенные в этот массив ещё и на диск запишутся?
NAlexN 23.12.2013 21:39 # 0
Ссылки, к сожалению, сайт не разрешает
http://ru.wikipedia.org/wiki/Спагетти-код
NAlexN 23.12.2013 21:41 # 0
krypt 23.12.2013 15:36 # 0