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

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

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

3
Плоский или вложенный JSON для иерархических данных?
Я переключался туда и обратно ~ 5 раз уже. Эта конечная точка REST по /api/tags/желанию предназначена для внутреннего использования (без сторонних клиентов), я единственный, кто работает с ней. Я выбираю между этими двумя представлениями: Плоский { "types":[ { "id":1, "text":"Utility" }, { "id":7, "text":"Lease Terms" }, ], "tags":[ { "id":8, …
12 rest  api-design  json 

4
Не правильно ли использовать флаги для «группировки» перечислений?
Насколько я понимаю, [Flag]перечисления обычно используются для вещей, которые можно комбинировать, когда отдельные значения не являются взаимоисключающими . Например: [Flags] public enum SomeAttributes { Foo = 1 << 0, Bar = 1 << 1, Baz = 1 << 2, } Если какое - либо SomeAttributesзначение может быть комбинацией Foo, Barи …
12 c#  .net  readability  enum 

2
Как на самом деле узнать, что нужно сделать в объектно-ориентированном дизайне?
Во-первых, отказ от ответственности: я не знаю, подходит ли этот вопрос к этому сайту, но я все еще считаю его актуальным не только для меня, но и для других начинающих людей. Если вопрос может быть улучшен, чтобы соответствовать здесь, пожалуйста, укажите в комментариях. Если это не подходит, дайте мне знать …

1
Совместное использование частей монорепо
В настоящее время у нас есть сложная и неэффективная система сборки, состоящая из множества репозиториев SVN и Git (около 50% каждый), в том числе репозитория подмодулей git. У нас также есть домашние сценарии, которые более или менее хорошо управляют всем этим. Основной момент нашей (с закрытым исходным кодом) кодовой базы …

6
Какой термин используется для описания функции / метода, который модифицирует вызываемый объект?
Извините за общий вопрос. Я искал повсюду и нашел так много тем, похожих на эту, но не ту, которая отвечает на мой конкретный вопрос - возможно, потому что искомый термин даже не существует. Мой друг изучает программирование, особенно JavaScript, и спросил меня, почему это не работает: var a = "Hello …

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

2
Почему PHP рассматривает «0» как ЛОЖЬ в логических контекстах?
«0», как строка, содержащая один символ, не является чем-то пустым интуитивно. Почему PHP обрабатывает его как FALSE при преобразовании в логическое значение, в отличие от других языков программирования?
12 php  strings  boolean 

5
Найти ближайший подходящий для круга
Ниже приведен пример изображения, если у меня есть точка белой точки в середине, и я хочу найти ближайшее возможное местоположение для синего круга (который, очевидно, находится в том месте, где я его поместил), если все красные круги уже существуют , Как я могу найти это место? Производительность для меня не …

8
Правильный дизайн для класса с одним методом, который может варьироваться между клиентами
У меня есть класс, используемый для обработки платежей клиентов. Все методы этого класса, кроме одного, одинаковы для каждого клиента, за исключением одного, который вычисляет (например), сколько должен пользователь пользователя. Это может сильно варьироваться от клиента к клиенту, и нет простого способа записать логику вычислений в нечто вроде файла свойств, поскольку …

1
Введение дополнительных локальных переменных в качестве замены комментариев
Это хороший стиль, чтобы использовать дополнительные, технически лишние, локальные переменные для описания того, что происходит? Например: bool easyUnderstandableIsTrue = (/* rather cryptic boolean expessions */); if(easyUnderstandableIsTrue) { // ... } Когда дело доходит до технических накладных расходов, я ожидаю, что компилятор оптимизирует эту дополнительную строку. Но считается ли это ненужным …

1
Можно ли доказать, что функция идемпотентна?
Можно ли использовать статические или зависимые типы, чтобы доказать, что функция идемпотентна? Я безуспешно искал в Google и других местах в StackOverflow / StackExchange ответ. Самым близким, что я нашел, был этот разговор о Идрисе: https://groups.google.com/forum/#!topic/idris-lang/yp7vrspChRg К сожалению, это обсуждение немного над моей головой.
12 haskell 

5
Есть ли недостаток в выделении огромного количества стека для одного массива во встроенной системе?
У меня обычно не возникает проблем с выбором, должны ли некоторые данные быть глобальными, статическими или размещаться в стеке (здесь нет динамического выделения, поэтому не нужно использовать кучу). Я также прочитал несколько вопросов и ответов, таких как этот, но мой вопрос более конкретный, поскольку он включает в себя огромный объем …

4
Технический термин для обозначения противоположности внедрения зависимости?
Это скорее номенклатура (техническое письмо), а не чисто технический вопрос. Я пытаюсь написать предложение по рефакторингу (и назначить его себе), сосредоточенное на расширении внедрения зависимостей в нашем приложении. Хотя мы используем Spring для автоматического подключения bean-компонентов, все еще существуют экземпляры, использующие экземпляры bean-компонентов MyClass obj = new MyClass(...), которые могут …

3
Модульное тестирование класса, который использует DI без тестирования внутренних
У меня есть класс, который рефакторинг в 1 основной класс и 2 меньших класса. Основные классы используют базу данных (как это делают многие мои классы) и отправляют электронные письма. Таким образом, у основного класса есть IPersonRepositoryи IEmailRepositoryинъекция, которая, в свою очередь, отправляет 2 меньшим классам. Теперь я хочу провести юнит-тестирование …

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