Как стать автором
Обновить
-22
0
Мурадов Артем @tym32167

Программист

Отправить сообщение
Откуда вообще это берется мнение? Я, например, мониторю свою метку, и если к новичку как то незаслуженно плохо относятся (а это бывает очень-очень редко), стараюсь это присекать. Дайте хоть ссылки на такие случаи, я их сам пофлагаю во имя добра и заплюсую все хорошие вопросы. Просто тратишь каждый день своё время, чтобы пояснить новичкам как задавать вопросы, помогаешь решать задачи, а потом кто то в интернете просто с плеча задвинает такие мысли, как вы задвигаете — обидно немножечко.
Я думаю, что вот есть SOLID, есть паттерны, есть рекомендации, написано много книжек про всё это, и все эти вещи — они взаимосвязаны. То есть нет смысла искать какие то подводные камни в одном принципе. Есть же и рекомендации про сокрытие реалиации класса, и про DDD и прочее. К тому же, следование принципам не отменяет необходимости думать головой.
Ну, раз мы понимаем принцип одинаково (мое понимание), то вопрос закрыт. А в статье да, тема SOLID не раскрыта.
Никто не претендует на точность, я только хотел показать, что вот это
Модуль верхнего уровня всегда зависит от модуля нижнего уровня, который он использует.
не совсем верно, так как они оба должны зависеть от абстракций. По крайней мере я так понимаю принцип.
SOLID, как и паттерны — это рекомендация, а не жесткие требования. Это как совет общего назначения. Использовать вам что то оттдуда или нет — решать только вам. При написании кода всё ещё нужно думать головой. Не раздувайте код — и он не будет раздуваться.
Вообще, принцип инверсии зависимостей звучит как то так
Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Тоже интересно про доставку за пределы РФ

Я взял формулировку из статьи


Он может отсоединяться, превращаясь в отдельный (увесистый) планшет.

Как оно на самом деле называется и почему такой конструкции я без понятия

Судя по тексту, всё железо в экране так как клавиатуру можно отсоединить и получить планшет.
Из моей практики мне несколько раз помогало знание основ алгоритмов. Самое очевидное и частое где это пригождается — народ поголовно не понимает разницу между линейным поиском и поиском по хеш таблице. Только в прошлом году разгонял участок кода, который работал 30 минут из за большого количества линейных поисков (там надо было замапить одну сущность на другую, так вот бралось пооле из сущности 1 и лнейным поиском искалось поле из сущности 2). И после замены на словарик тот участок стал работать 3 секунды. Потому когда я собеседую людей, обязательно задаю вопрос про различие поиска по словарю и по списку.
Другой пример — однажды мы делали систему где важной частью была древовидная сущность — дерево с произвольным количеством дочерних узлов. Нам надо было ходить вверх\вниз, собирать множество и подмножество объектов, и прочее. Это, конечно, не rocket science, но поиск в ширину и глубину пришлось использовать.
Много было более мелких эпизодов, когда ты видишь неэффективный код и правишь его просто чтобы улучшить производительность — как то раз применял сортировку подсчетом, менял проверку наличия цифр в строке с регулярки на линейный поиск (почему все так любят регулярки? Они ж медленные. Откуда я это знаю? — из курса алгоритмов) и тд. Но, конечно, у меня не было ничего настолько сложного, чтобы пришлось прямо изобретать алрогитм. А писать свою сортировку слиянием это вообще зачем? Я не уверен, что олимпиадники в задачах пишут сортировки сами (только если это не смысл задачи), мне кажется это просто трата времени.
Я к тому, что писать алгоритмы каждый день может и не придется, но знание как они работают помогает писать более эффективный код.
Расскажите про Amazon подробнее, пожайлуйста. На какую должность собеседовались, как само собеседование проходило, вообще для несведущего — плюсы работы в Амазоне (у вас же была причина пройти там собеседование)?
Не знаю кто как, но я, когда ищу работу, просто фильтрую вакансии по технологиям, региону и зарплате. То есть вакансии без зарплат я просто не увижу. Да и не нужны они. Смысла нет на них время тратить.
ISomeDataProvider provider = new CachedDataProvider(new MyDataProvider())

Я это написал только, чтобы можно было лучше понять суть. Писать в проде так не надо, конечно.
Зачем что то менять?
Как я понял, значально есть реализация ISomeDataProvider (например, MyDataProvider). Далее, делаем вторую реализацию CachedDataProvider. Без IoC контейнера первое выглядело бы как
ISomeDataProvider provider = new MyDataProvider();

подмена с кешированием станет выглядеть как
ISomeDataProvider provider = new CachedDataProvider(new MyDataProvider());

К примеру, такое декорирование Castle Windsor поддерживает из коробки, достаточно указать, что для резолва ISomeDataProvider нужен не только MyDataProvider, но и CachedDataProvider.
Я не сомневаюсь, просто дополнил ваш комментарий полезным словом.
Это называется декоратор :)
Для большинства дисциплин достаточно ста часов активного изучения, чтобы начать разбираться в них гораздо лучше новичка.

Сомнительная цель — разбираться лучше новичка. Можно найти дисциплину, где и за 15 минут изучения можно разобраться лучше новичка, но смысл этого?
Если цель — получение какого то результата, будь это зарабатывание денег или спортивные достижения — что то мне подсказывает, что 100 часов будет недостаточно.
А для достижения простых целей — сдать экзамен по вождению, например, 100 часов может и хватить.
Ну, лично я купил лицензию и пользуюсь линкупадом уже более 4 лет. Ну, и вы можете либо купить, либо сами знаете что.
получили бы linqpad

Информация

В рейтинге
Не участвует
Откуда
Toronto, Ontario, Канада
Дата рождения
Зарегистрирован
Активность