|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
|||||||||||||||||||||||||||||||
Быстрое обращение к данным многомерных словарей15.06.2013, 11:24. Показов 6320. Ответов 39
Метки нет (Все метки)
предлагаю на рассмотрение следующий метод работы с данными многомерных словарей
рассматриваются словари, чья многомерная структура состоит из словарей и массивов 1) сокращенные методы получения данных из словарей и массивов
2) примеры кода, показывающие удобство использования сокращенных конструкций key-index
состоит из кнопок на которые назначены действия показа данных через NSLog в программе заполняется многомерный словарь состоящий из 4 уровней 1 - словарь 2 - массив 3 - словарь 4 - словарь структура исходный код программы ViewController.h
0
|
|||||||||||||||||||||||||||||||
| 15.06.2013, 11:24 | |
|
Ответы с готовыми решениями:
39
Приложение представляющее организацию многомерных вычислений многомерных массивов Обращение к данным из базы Обращение к данным класса. |
|
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
|
||||
| 24.07.2013, 01:44 | ||||
|
я вам показал довольной конкретный пример, конкретную реализацию, не больше, не меньше говорю, что такое удобно рефакторить, соответствует оо-подходу, покрывается юнит-тестами если в одном классе нужно порядка 50 макросов констант, то стоит задуматься об архитектуре, если это не какой-то базовый класс с настройками фреймворка или чего-то в таком духе в Objective-C с подчеркиванием пишутся низкоуровневые конструкции или часть на С, думаю это нетрудно заметить наблюдая за Foundation хотя бы. Плюс снова повторюсь, во всем мире зачастую макросы константы пишутся начиная с k (kSomeValue), потому людям, работающим с вашим кодом будет легко и привычно. думаю, тут вы найдете что-то полезное, а так же по простому запросу 'objective-c naming conventions' http://developer.apple.com/lib... 000146-SW1 в C# в Visual Studio вообще все слова бирюзового цвета, так что, там скажете неудобно работать? это тут вам и розовенький и фиолетовенький и коричневенький лишь бы разработчик не хныкал, и все равно находятся такие, ну насчет цвета это все очень печально, надеюсь вы попадете хорошему тимлиду, который вас быстро в чувство приведет, иначе никак ... вы либо с какого-то php или javascript начинали (простите, наболевшее), либо просто не видели массивные серьезные проекты, где работает по 10-15 человек только на клиенте вы то ли перевоплощение alexpac26, то ли он и есть, потому что так же упрямо стоите на своем, невзирая на то, что вам везде советуют пишете наверное сами для себя в кладовке, куда никакая культура кодирования не проникнет, как бы и не старалась, выкладываете на всеобщее пользование корявые и ненужные обрывки кода, то прислушивались бы к всеобщим канонам, раз все-таки хотите вести какую-то деятельность среди других разработчиков, а не наедине с собой
0
|
||||
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
||||
| 24.07.2013, 02:08 [ТС] | ||||
0
|
||||
|
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
|
|||
| 24.07.2013, 02:42 | |||
|
как раз таки, для меня это интересный коллективный проект, который очень хорошо написан, легко поддерживается и конфигурируется, в который не стыдно привести коллегу или передать его ему и который без меня смогут поддерживать другие программисты зная только логику самого проекта, не углубляясь в детали
для меня творчество - это красота и простота, мне приятно когда другие люди могут без труда вникнуть в мой код, не зацикливаясь на мелочах и не спотыкаясь на костылях например файлик констант для каких-то путей в директории проекта, их использует весь проект, их легко конфигурировать и они лежат по назначению например юнит тестирование – поначалу казалась ужасно рутинной работой, зато когда наловчился хоть немного, пишешь функциональность ни разу не компилируя код и в процентах 70-80 он работает сходу, плюс сам код написан красиво и правильно, доступен для рефакторинга больше чем обычный код да и рефакторить можно не боясь что-то сломать, ничего лишнего не пишешь, что потом вызовет кучу головной боли, одно удовольствие все чисто и ясно, как божий день, дописал что-то, подправил что-то, результат сразу на лицо, в плане регрессивного тестирования больше доверяю машине, чем человеку да и тестировщику меньше головной боли перепроверять или старый функционал не свалился, больше позитива, чем головняка и проблем (сам рад, что все как хотелось да и денег больше получаешь за богатый опыт и хороший, рабочий код), вот это я называю наслаждением просто оставлю это здесь http://qualitycoding.org/objective-c-code-smells/ а особенно это http://qualitycoding.org/preprocessor/#macro вообще интересный дядька, советую перечитать его блог
1
|
|||
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
|
| 24.07.2013, 02:49 [ТС] | |
|
Все это прекрасно, но пока #define выделяются на фоне остальных переменных, и плюс прибавим сюда следование "стандартам" названия констант kDefineValue
Ни enum ни static const, не смотря на кажущиеся преимущества, не смогут так выглядеть как они, а следовательно что с константами что без них, код будет бирюзовой гаммой а ведь !методы! объявления что у enum и static const, что у #define ИНДЕТИЧНЫ Оба сидят в хедере и оба прозрачны для изменений. Так почему не использовать? Банальное не хотение ?
0
|
|
|
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
|
|||
| 24.07.2013, 03:20 | |||
|
ну то что enum может группировать числовые константы и это удобней чем макросы, надеюсь спорить вы не станете насчет C# я так и не понял, чем там бирюзовые вперемешку со светло-зелеными оттенками не мешают разработчикам и никто там не использует директивы, а тут вот без директив плохо да и я же дал вам ссылку на шикарнейший источник, это не просто скучающий дядя, а один из тех, на кого весь мир равняется и вам советую того же, тем более объясняет он убедительней меня смею предположить, что вы выбираете красивое подсвечивание в одной из IDE, грамотности, правильности и чистоте кода и банальное нехотение как раз относится к вам тут просто уже столько доводов приведено, а вы все стоите на коричневеньком подсвечивании в одной из безгранично многих настроек, одной из многих IDE и текстовых редакторов кстати текст читать удобней, когда он монотонного цвета, а не пляшет как светофор в правильно написанном методе никогда не будет путаницы по поводу "откуда эта переменная", так как методы должны быть краткими, выполнять одну и только одну функцию и не быть больше 5-10 строк, и если придерживаться конвенции выделения констант, статических переменных и т.д., то вы сразу заметите что из себя представляет переменная тут если сразу учиться программировать правильно, можно заметить что все между собой взаимосвязанно и в итоге получается чистый и красивый код, который легко поддерживать прекрасно сказано We work in an object-oriented language, so let’s use OO patterns, shall we?
0
|
|||
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
|||||||||||||||
| 24.07.2013, 09:57 [ТС] | |||||||||||||||
в отличие от objc где метод вынужден избыточно называть себя как ENG предложение
[object methodWithParam1: kParam1 AndParam2: kParam2]; возмем код без макроса [object methodWithParam1: kParam1 AndParam2: kParam2]; а теперь угадай какой из фрагментов кода я щас напишу ниже? нижний или верхний?
Да, код не грамотный с точки зрения того что макрос надо заменить константами и тд и тп. А в остальном он чистый и правильный с какой стороны не глянь. Чем то приходится жертвовать...
0
|
|||||||||||||||
|
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
|
|
| 24.07.2013, 10:16 | |
|
0
|
|
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
|
| 24.07.2013, 12:25 [ТС] | |
|
осталось выяснить каким цветом там раскрашиваются макросы и константы.
Вообще если у них цвет одинаковый (как в C#) то нет смысла использовать #define.
0
|
|
|
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
|
|
| 24.07.2013, 12:35 | |
|
вам не кажется что пора завязывать
? а то вся дискуссия свелась к тому кому какой цвет нравиться.
0
|
|
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
| 24.07.2013, 12:45 | |
|
Ааааа.
ПРОСТО_ЗАКРОЙТЕ_ТЕМУ.
0
|
|
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
||||||
| 24.07.2013, 12:46 [ТС] | ||||||
|
я тут попробовал константы, оказывается строки почемуто желтеют при попытке передать из как типизированный параметр в функцию
может я неправильно ее объявил? ARC включен
0
|
||||||
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
||||||||||||||||
| 24.07.2013, 12:58 [ТС] | ||||||||||||||||
|
я неправильно объявил.
![]() http://stackoverflow.com/quest... -qualifier надо вот так
Итак если нужно правильно и быстродейственно, то используем константы для подсказывания параметров
Используем макросы
0
|
||||||||||||||||
|
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
|
|
| 24.07.2013, 12:58 | |
|
1
|
|
|
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
|
||
| 12.09.2013, 12:31 | ||
0
|
||
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
||||
| 12.09.2013, 12:55 [ТС] | ||||
даже если это удобно?
0
|
||||
|
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
|
|||
| 13.09.2013, 00:06 | |||
|
в iOS уже есть NSUserDefaults а тупой синглтон со словарем, к которому обращается масса контроллеров, это мягко говоря говнокод, разве что у вас есть ну очень веская причина для подобной архитектуры. Есть масса ооп принципов и видов рефакторинга, которые без особых усилий уберут необходимость в этом god-singleton классе ну и учитывая то, что уже, как полгода есть возможность использовать упрощающие жизнь лексемы, необходимость в этом масле масленном пропадает если тут: [_dict1 objectForKey:@"k1"] я читаю как обычное предложение на английском, т.е. dictionary's object for key 'k1', я понимаю что получу объект по ключу, то у вас: [_dict1 key:@"k1"] я ожидаю получить ключ относительно какой-то непонятной строки – dictionary's key 'k1', т.е. дай мне ключ к1 что ли? фигня какая-то, люди в NextStep были поумнее вас и старались предоставить действительно удобный интерфейс, который можно будет читать а то, что длинные слова, так это вполне конкретно раскрывает суть конструкции, и с их написанием нет никаких проблем благодаря навороченным IDE с автодополнением, и всякая муть вроде dict и arr должна оставаться в своем времени (конца 90х) почитайте Clean Code хотя бы, я вас прошу, я не могу пропустить мимо глаз подобную ересь
0
|
|||
|
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
|
|||||
| 16.09.2013, 09:24 | |||||
![]()
Вы правда думаете, что другой разработчик, когда увидит хоть это: [[[[_dict1 objectForKey:@"k1"] objectAtIndex:0] objectForKey:@"k3"] objectForKey:@"s4"], хоть это: [[[[_dict1 key:@"k1"] index:0] key:@"k3"] key:@"s4"], сможет быстро разобраться, что тут происходит?
)
0
|
|||||
|
112 / 103 / 12
Регистрация: 01.05.2013
Сообщений: 603
|
||||
| 16.09.2013, 09:43 [ТС] | ||||
2) я предложил использовать key: index: за имененем пока должных альтернатив objectForKey, не смотря на свою общепринятость, все равно громоздок 3) литералы приемлемы для словарей. Однако для массивов возникается таже самая ошибка (вылет приложения) если идет вызов по несуществующему индексу. метод index: , перед вызовом элемента проверяет, на то что индекс входит в дипазон размера массива, иначе вызывает nil и ошибки удается избежать, хотя бы по этой причине я использую index: для массивов. 4) https://developer.apple.com/li... lines.html OK мне это изветсно 5)
Есть масса ооп принципов и видов рефакторинга есть то она есть, однако если приложения тупо получает JSON с сервера и выводит его, зачем плодить абстракции?
0
|
||||
|
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
|
|||||
| 16.09.2013, 11:13 | |||||
В говнокоде типа вашего - да. В чистом логичном коде, написанном, следуя code conventions, быстро разбираются даже джуниоры.
0
|
|||||
|
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
|
|
| 16.09.2013, 11:31 | |
|
0
|
|
| 16.09.2013, 11:31 | |
|
Обращение к данным 1С Предприятия Обращение к данным хостинга обращение к данным структуры Обращение к определенным данным в таблице Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|