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

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




7
Как вы кодируете алгебраические типы данных в C # или Java-подобном языке?
Есть некоторые проблемы, которые легко решаются алгебраическими типами данных, например, тип List может быть очень кратко выражен как: data ConsList a = Empty | ConsCell a (ConsList a) consmap f Empty = Empty consmap f (ConsCell a b) = ConsCell (f a) (consmap f b) l = ConsCell 1 (ConsCell …

3
Что классифицируется как СУХОЙ, ПОЦЕЛУЙ, ТВЕРДЫЙ и т. Д.?
Является ли что-то вроде DRY шаблоном дизайна, методологией или чем-то промежуточным? Они не имеют конкретных реализаций, которые могут быть обязательно продемонстрированы (даже если вы можете легко продемонстрировать случай, НЕ используя что-то вроде KISS ... см. The Daily WTF для множества примеров), и при этом они не объясняют полностью процесс разработки …

3
Этимология «Струны»
Таким образом, очевидно, что строка вещей - это последовательность вещей, и поэтому последовательность символов / байтов / и т. Д. с тем же успехом можно назвать строкой. Но кто первым назвал их струнами? И когда? И в каком контексте такой, что он застрял? Я всегда задавался вопросом об этом.

6
Должны ли мы создать новый единственный экземпляр HttpClient для всех запросов?
недавно я наткнулся на это сообщение в блоге от asp.net monsters, в котором говорится о проблемах с использованием HttpClientследующим образом: using(var client = new HttpClient()) { } Согласно сообщению в блоге, если мы располагаем HttpClientпосле каждого запроса, он может держать соединения TCP открытыми. Это может потенциально привести к System.Net.Sockets.SocketException. Правильный …
58 c#  http-request 

12
Действительно ли ловить общие исключения - это плохо?
Я обычно согласен с большинством предупреждений анализа кода и стараюсь их придерживаться. Тем не менее, мне сложнее с этим: CA1031: не перехватывать общие типы исключений Я понимаю обоснование этого правила. Но на практике, если я хочу предпринять одно и то же действие независимо от выданного исключения, зачем мне обращаться с …
58 c#  design  exceptions 

4
Есть ли исключительные случаи, когда мы можем принять дубликат кода?
Я работаю над программным проектом, в котором нам нужно создать три API. Один для канала домашнего банкинга, один для канала агентства и третий для мобильного канала. API агентства является наиболее полным, поскольку он имеет все функциональные возможности ... затем немного меньше Home API, а затем мобильный API. Здесь архитекторы создали …
57 java  api  spring 


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

9
Удобочитаемость в сравнении с ремонтопригодностью, особый случай написания вызовов вложенных функций
Мой стиль кодирования для вызовов вложенных функций следующий: var result_h1 = H1(b1); var result_h2 = H2(b2); var result_g1 = G1(result_h1, result_h2); var result_g2 = G2(c1); var a = F(result_g1, result_g2); Недавно я перешел в отдел, где очень популярен следующий стиль кодирования: var a = F(G1(H1(b1), H2(b2)), G2(c1)); Результатом моего способа …

4
Почему тип идет после имени переменной в современных языках программирования?
Почему почти во всех современных языках программирования (Go, Rust, Kotlin, Swift, Scala, Nim, даже последняя версия Python) типы всегда идут после имени переменной в объявлении переменной, а не раньше? Почему x: int = 42и нет int x = 42? Разве последнее не более читабельно, чем первое? Это просто тенденция или …

16
Как хранить «неизвестные» и «отсутствующие» значения в переменной, сохраняя при этом разницу между «неизвестными» и «отсутствующими»?
Считайте это «академическим» вопросом. Мне было интересно время от времени избегать значений NULL, и это пример, когда я не могу найти удовлетворительное решение. Давайте предположим, что я храню измерения там, где в некоторых случаях измерение, как известно, невозможно (или отсутствует). Я хотел бы сохранить это «пустое» значение в переменной, избегая …

8
Как мы можем быть уверены, что нижние компоненты компьютерного программирования, такие как компиляторы, ассемблеры, машинные инструкции и т. Д., Безупречны?
Поскольку мы все больше и больше полагаемся на вычисления, включая очень важные задачи повседневной жизни, мне было просто интересно, как тестируются эти жизненно важные компоненты. С технической точки зрения, как тестируются компиляторы и ассемблеры? (Я полагаю, это связано с проблемой остановки !!)

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