Программная инженерия

Q & A для профессионалов, преподавателей и студентов, работающих в жизненном цикле разработки систем

22
Автоматическое программирование: написать код, который пишет код [закрыто]
После прочтения книги «Прагматичный программист» одним из наиболее интересных аргументов мне показалось «написать код, который пишет код». Я попытался найти в сети еще несколько объяснений или статей по этому поводу, и хотя я нашел несколько хороших статей по этому вопросу, я до сих пор не нашел какой-либо конкретной реализации кода …

12
Почему квадратное наследование от Rectangle будет проблематичным, если мы переопределим методы SetWidth и SetHeight?
Если Квадрат является типом Прямоугольника, то почему Квадрат не может наследовать от Прямоугольника? Или почему это плохой дизайн? Я слышал, как люди говорят: Если вы сделали Square производным от Rectangle, то Square должен использоваться везде, где вы ожидаете прямоугольник В чем здесь проблема? И почему Square можно использовать везде, где …


5
Как переход на микросервисы создает проблему во время выполнения?
Следующий комментатор пишет : Микросервисы переносят вашу организационную дисфункцию с проблемы времени компиляции на проблему времени выполнения. Этот комментатор расширяет тему, говоря: Функция не ошибка. Проблема времени выполнения => проблемы с продуктом => более сильная и быстрая обратная связь о дисфункции ответственным лицам Теперь я получаю это с микросервисами вы: …

6
Что такое домен?
Я часто вижу этот термин в контексте архитектуры программного обеспечения («доменная модель», «доменный дизайн» и т. Д.). Я прогуглил это, но я получаю тонны различных определений. Так что это на самом деле?

3
Почему батуты работают?
Я делал некоторый функциональный JavaScript. Я думал, что оптимизация Tail-Call была реализована, но, как оказалось, я ошибался. Таким образом, я должен был научить себя прыжкам на батуте . Немного почитав здесь и в других местах, я смог освоить основы и сконструировал свой первый батут: /*not the fanciest, it's just meant …

3
Безопасность API REST Сохраненный токен против JWT против OAuth
Я все еще пытаюсь найти лучшее решение для защиты API REST, потому что количество мобильных приложений и API растет с каждым днем. Я пробовал разные способы аутентификации, но все еще есть некоторые недоразумения, поэтому мне нужен совет кого-то более опытного. Позвольте мне рассказать, как я понимаю все эти вещи. Если …
104 security  rest  api  oauth  https 

10
Как сделать большую кодовую базу проще для понимания
Предположим, что я разрабатываю относительно большой проект. Я уже задокументировал все свои классы и функции с помощью Doxygen, однако у меня была идея поместить «заметки программиста» в каждый файл исходного кода. Идея заключается в том, чтобы объяснить в терминах непрофессионала, как работает конкретный класс (и не только почему, как это …

4
Каковы различия между программированием на стороне сервера и на стороне клиента?
Я видел вопросы (в основном о переполнении стека), в которых отсутствуют базовые знания. Суть этого вопроса - предоставить хорошую информацию тем, кто ищет ее, и тем, кто на нее ссылается. Каковы различия между программированием на стороне сервера и программированием на стороне клиента в контексте веб-программирования? Какие языки принадлежат к какому …

14
Делает ли TDD защитное программирование избыточным?
Сегодня у меня была интересная беседа с коллегой. Я защитник программиста. Я считаю, что всегда должно соблюдаться правило « класс должен гарантировать, что его объекты имеют действительное состояние при взаимодействии с ним извне ». Причиной этого правила является то, что класс не знает, кто является его пользователями, и что он …

5
Разве принципы асинхронного / ожидающего использования в C # не противоречат понятиям хорошей архитектуры и многоуровневой абстракции?
Этот вопрос касается языка C #, но я ожидаю, что он охватит другие языки, такие как Java или TypeScript. Microsoft рекомендует лучшие практики по использованию асинхронных вызовов в .NET. Среди этих рекомендаций давайте выберем две: измените сигнатуру асинхронных методов, чтобы они возвращали Task или Task <> (в TypeScript это будет …
103 c#  architecture  async 

4
В чем разница между папками «lib» и «vendor»?
Что касается иерархии исходных папок, всегда есть некоторые общие функции, такие как src, docили testпапки, которые имеют довольно простое для понимания содержимое. Тем не менее, я понял, что в больших проектах есть libи vendorпапки, и папки, хотя я всегда думал, что они одинаковы, поскольку их названия намекают на то, что …

14
Как я могу действительно овладеть языком программирования?
Я знаю, что изучая язык, вы можете просто купить книгу, следовать примерам и по возможности выполнять упражнения. Но то, что я действительно ищу, - это как овладеть языком, как только вы его выучите. Теперь я знаю, что опыт является одним из основных факторов, но как насчет изучения внутренних элементов языка, …

12
Тестируемый код лучше кода?
Я пытаюсь привыкнуть регулярно писать модульные тесты с моим кодом, но я прочитал, что сначала важно написать тестируемый код . Этот вопрос касается твердых принципов написания тестируемого кода, но я хочу знать, полезны ли эти принципы проектирования (или, по крайней мере, не вредны), не планируя писать тесты вообще. Чтобы уточнить …

11
К каким ошибкам приводят утверждения «goto»? Есть ли исторически значимые примеры?
Я понимаю, что за исключением разрыва циклов, вложенных в циклы; это gotoутверждение уклоняется и осуждается как склонный к ошибкам стиль программирования, который никогда не будет использоваться. Alt Text: «Нил Стивенсон считает, что называть его ярлыки« деньгами »мило». См. Оригинальный комикс по адресу: http://xkcd.com/292/ Потому что я узнал это рано; У …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.