Как стать автором
Обновить
22
0
Алексей @pankraty

Разработчик

Отправить сообщение
Да, пожалуй, стремясь избавиться от англицизмов я несколько перегнул палку.

"Если мы сделали унифицированную модель самолет с определенным размахом крыльев и 2 реактивными двигателями, мы можем быть уверены, что любой из наших самолетов (военных, гражданских или грузовых) сможет сесть на ВВП полосу предназначенную для данного типа самолета. Это полиморфизм"


Либо я не до конца понял вашу аналогию, либо она неверна. В ней скорее говорится, что экземпляры классов самолётов, реализующих определенный интерфейс, могут быть приняты в качестве входных параметров экземплярами класса "аэродром". Полиморфное поведение не описано.


Полиморфизмом будет, например, реализация рулей высоты. В типовом (абстрактном) проекте определен штурвал, который можно перемещать к себе/от себя, изменяя "наклон" самолёта (угол атаки?) Как конкретно происходит его изменение — в типовом проекте не описано, а описано в проектах разных моделей самолетов: В гражданском используются рули высоты, а в истребителе — изменяемый вектор тяги двигателя. Это полиморфизм.

Достойное пополнение коллекции

    /*
        COME TO THE DARK SIDE!!!

                 _.-'~~~~~~`-._                                                    
                /      ||      \                                                   
               /       ||       \        
              |        ||        |                      
              | _______||_______ |                                                 
              |/ ----- \/ ----- \|                                                 
             /  (     )  (     )  \                                                
            / \  ----- () -----  / \                                               
           /   \      /||\      /   \                                              
          /     \    /||||\    /     \  
         /       \  /||||||\  /       \                                            
        /_        \o========o/        _\                                           
          `--...__|`-._  _.-'|__...--'                                             
                  |    `'    |                         

    */


Из заголовочной части одного очень заморочного модуля.
Разве что там авторизация какая-то — одним можно, другим нельзя.

Ну, во-первых, для этого. Никто не будет рад, если фотки из личного альбома вконтактике будут доступны кому угодно по прямому URL (хотя бы потому, что URL-ы сохраняются в истории браузера).

Навскидку еще пара вариантов.
* Отдавать картинку, которую пользователь редактирует онлайн — добавляет надписи, рамочки, эффекты и т.п.
* Картографический сервер, который рендерит участок карты в соответствии с параметрами в GET (координаты центра, масштаб, разрешение...)

Кроме принципа подстановки Лисков есть еще принцип открытости/закрытости. Предлагавшийся выше вариант с public interface ICartState куда лучше ему соответствует, ИМХО. В предлагаемом Вами варианте добавление новых состояний при изменении требований будет вызывать боль из-за разрастающихся switch-ей и необходимости изменять множество мест сразу — хотя именно этого хотелось бы избежать.


Навскидку: от бизнеса может придти требование — "а давайте, пользователь может в уже оплаченной корзине добавлять или убирать бесплатные опции — доставку, например, или подарок...". И вся стройная система состояний ломается, т.к. в PaidCartState внезапно надо добавить методы Add(Product product) и Remove(Product product) с дополнительными валидациями, а точно ли можно этот product в данном состоянии Add или Remove. Так что SRP размывается тоже.

Да, но покрыв их один раз модульными тестами, вы сможете не переживать за их корректность во всех других местах, где они будут использоваться.
Поддерживаю. Мне доводилось выполнять тестовое задание для одной конторы, в котором требовался очень простой (и явно не для использования в продакшене) функционал, но обставленный рядом дополнительных требований к используемым техникам и технологиям: реляционная СУБД, WCF-сервисы, UI на основе WPF, IoC и т.п. Такое задание, очевидно, служит именно для того, чтобы оценить степень владения кандидата стеком технологий, используемых на проекте, скорость работы, качество архитектуры, кода, документации. Уровень владения английским, в конце концов. Такой вариант оценки кандидата вполне оправдан, на мой взгляд.
И, кстати, когда я отправлялся на собеседование в другую контору, меня спросили, готов ли я выполнить тестовое задание, на что я им предложил посмотреть результаты задания, выполненного для другой компании, — всех это вполне удовлетворило, тратить время на еще одно задание не пришлось.

То, что описано у автора, реально больше похоже на развод.
Я не про то, что вы что-то сделали не так, у вас, я так понял, коммерческая версия, купленная для работы. Просто слова «справился за сутки, пробной версии для этого хватит» могут быть восприняты кем-то как руководство к действию — скачать пробную версию и запилить на ней промо-ролик, а это нарушение лицензионного соглашения. Просто хотел обратить на это внимание, чтобы новички по незнанию не вляпались.

Я думаю, pirate_tony намекает, что использование пробной версии в коммерческих целях недопустимо по лицензионному соглашению.

Мне больше знакома другая ситуация — 200+ компонентов в проекте, 1 баг, который надо отловить (или небольшое изменение). В этом случае, хочешь не хочешь, надо разобраться в чужом коде, понять, что откуда берется, куда передается дальше, на что влияет и почему (в случае бага) работает не так. А потом вписать свое решение таким образом, чтобы ничего не сломать. Можно, конечно, попробовать переписать с 0, но это совершенно другая задача, с совершенно другими сроками.

Собственно, вот.
Есть еще Design Guidelines for Class Library Developers, которые зачастую берутся за основу для coding conventions на крупных проектах.
Возможность имеется, но лицензия GPL накладывает определенные ограничения на такой продукт. Оцените, насколько это подходит для вашей задачи.
Надо же, у меня ровно обратный опыт — в SHP жесткие ограничения на именования полей (латиница, без пробелов, до 30 знаков, если не ошибаюсь), а в SQLite — хоть русскими буквами с пробелами, и без проблем.

устранение сдвига с любой погрешностью благо.

А откуда вы знаете, что к чему надо подтягивать? Какой из источников точнее? Потом на карте с подтянутыми данными будут размещены какие-то объекты, на их основе выпущена какая-то производная документация, и пошло-поехало, концов не найдешь. Повторюсь, для своей задачи вы вольны делать, как посчитаете нужным (особенно, если хорошо понимаете, что делаете), но во вводной статье для новичков я бы не стал давать такие «бест-практисес».
Опять же, значения, которые вы подобрали, подходят для вашего района, в котором вы работаете. В соседнем (а тем более в удаленном) кадастровом районе смещения будут совершенно другими. И если в каждом районе подбирать свои эмпирические коэффициенты, увязать потом все воедино будет совершенно нереально (а то, что у Росреестра у самого данные между районами не сбиты, только усугубит проблему).

как из ПКК получить контур участка на свой слой?

Одно время на ПКК был доступен публичный сервис, позволяющий получать данные по кадастровым участкам в JSON в любой системе координат, но потом эту лавочку прикрыли. В любом случае, такое использование противоречило пользовательскому соглашению, потому что на выписках они деньги зарабатывают.
Так что, думаю, правильный ответ: «законно — никак».
… а потом обнаружить, что в полигонах бывают дырки…
… а потом обнаружить, что попадаются еще MULTIPOLIGON и, не приведи господь, CURVEPOLYGON…
… а потом обнаружить, что длина записи для содержимого ячеек Excel 32767 знаков, а WKT каких-то объектов вылезает далеко за эти пределы…

Не то чтобы решение плохое — сам множество операций делаю в Excel. Просто есть подводные камни )

Если окажется, что штатными средствами имеющихся программ задача не решается, рекомендую посмотреть на библиотеку NetTopologySuite (или JavaTopologySuite, или GEOS — смотря какой язык вам доступнее). Там из WKT-текста легко создать геометрические объекты, с которыми можно делать уже все, что заблагорассудится.

Если говорить про обработку геометрии в БД — то копайте в сторону PosgreSQL + PostGIS, не изобретайте велосипедов самостоятельно.
Статья полезная, спасибо.

Выскажу только пару замечаний/дополнений.

1. Формат SHP, конечно, по-своему хорош. Хотя бы тем, что он открытый, и его «едят» практически любые ГИС-программы. Но поскольку он весьма древний, есть у него свои ограничения: геометрия только одного типа на слой (либо точки, либо линии, либо полигоны), довольно узкие ограничения по длине наименований, длине значений и количеству полей; часто возможны проблемы с кодировкой текста (особенно, если передавать между разными программами). Плюс обработка SHP-файлов довольно медленная, что для больших объемов может быть критичным. Как альтернативу предлагаю рассмотреть SQLite — он также поддерживается многими программами (хоть и не столь широко) и лишен большинства недостатков SHP. В одном файле SQLite можно собрать сразу несколько слоев (иногда это плюс, иногда минус) и даже организовать связи между ними через внешние ключи.

2. Про географические системы координат — строго говоря, в школе мы не изучали WGS84, т.к. это система координат на конкретном (забугорном) эллипсоиде. То, что изучалось в школе, правильнее назвать LL (Долгота/Широта без привязки к конкретному элипсоиду). Но это мелочь. Гораздо серьезнее то, как вы создали СК, подобрав параметры эмпирическим путем. Вы, конечно, вольны делать, как вам удобно, но рядом надо приписать: НЕ ПОВТОРЯЙТЕ НИ В КОЕМ СЛУЧАЕ! Любая эмпирика в вопросах систем координат неизбежно рано или поздно приводит к тому, что накапливается значительный объем данных, привязанных черт знает как, и который потом кому-то надо пытаться привести в нормальный вид. И если при использовании разных, но известных СК это еще хоть как-то возможно (и то не гарантировано, если в разное время в один источник пишутся данные с разными видами привязки), то в случае таких вот пользовательских, искусственно подогнанных координат, накопленные данные рискуют отправиться в конце концов в мусорку.

В остальном — да, неплохой ликбез.
12 ...
13

Информация

В рейтинге
Не участвует
Откуда
Саратов, Саратовская обл., Россия
Дата рождения
Зарегистрирован
Активность