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

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

5
Можно ли говорить об анемичной модели в контексте функционального программирования?
Большинство шаблонов тактического проектирования DDD относятся к объектно-ориентированной парадигме, а анемичная модель описывает ситуацию, когда вся бизнес-логика помещается в сервисы, а не в объекты, что делает их своего рода DTO. Другими словами, анемичная модель является синонимом процедурного стиля, который не рекомендуется для сложной модели. Я не очень опытен в чисто …

6
Почему SQL не является более подходящим? [закрыто]
Все знают, что новые разработчики пишут длинные функции. По мере продвижения вы становитесь лучше, разбивая свой код на более мелкие части, и опыт учит вас тому, как это делать. Введите SQL. Да, способ мышления кода SQL отличается от процедурного мышления кода, но этот принцип кажется вполне применимым. Допустим, у меня …

5
Зачем наследовать класс, а не добавлять свойства?
Я нашел дерево наследования в нашей (довольно большой) базе кода, которая выглядит примерно так: public class NamedEntity { public int Id { get; set; } public string Name { get; set; } } public class OrderDateInfo : NamedEntity { } Из того, что я мог бы собрать, это прежде всего …

8
Является ли новое булево поле лучше нулевой ссылки, когда значение может отсутствовать?
Например, предположим, у меня есть класс Member, который имеет lastChangePasswordTime: class Member{ . . . constructor(){ this.lastChangePasswordTime=null, } } у которого lastChangePasswordTime может отсутствовать, потому что некоторые участники никогда не могут менять свои пароли. Но в соответствии с тем, что пустые значения являются злом, что следует использовать, когда значение может …
39 null  boolean 

5
Считается ли это анти-паттерном для чтения из STDIN из библиотеки?
Во время написания библиотеки для большого проекта, над которым я работаю на работе, возникла проблема, которая требовала, чтобы токен был отправлен на адрес электронной почты, а затем возвращен в код, где он может быть использован для дальнейшего использования. Мой коллега говорит, что нужно просто читать из STDIN (используя Python:), code …

11
Должен ли REST API возвращать 500 Internal Server Error, чтобы указать, что запрос ссылается на несуществующий объект?
Я работаю с REST API, который находится на сервере, который обрабатывает данные для множества устройств IoT. Моя задача - выполнить запрос к серверу с помощью API для сбора конкретной информации о производительности указанных устройств. В одном случае я получаю список доступных устройств и их соответствующие идентификаторы, а затем опрашиваю сервер …

6
Обеспечение возможности поиска кода с помощью глобально уникальных идентификаторов сообщений
Общий шаблон для обнаружения ошибки следует за этим сценарием: Соблюдайте странности, например, отсутствие вывода или зависание программы. Найдите соответствующее сообщение в журнале или выходе программы, например, «Не удалось найти Foo». (Следующее применимо только в том случае, если этот путь используется для обнаружения ошибки. Если трассировка стека или другая отладочная информация …

3
Почему я должен использовать «функциональные операции» вместо цикла for?
for (Canvas canvas : list) { } NetBeans предлагает мне использовать «функциональные операции»: list.stream().forEach((canvas) -> { }); Но почему это предпочтительнее ? Во всяком случае, труднее читать и понимать. Вы звоните stream(), затем forEach()используете лямбда-выражение с параметром canvas. Я не вижу, как это лучше, чем forцикл в первом фрагменте. Очевидно, …

7
Перевод внешних данных на язык программирования
Я не уверен, что делать со следующим: Мы берем данные из внешнего инструмента в нашем собственном инструменте. Эти данные написаны на голландском языке. Мы пишем наш Java-код на английском языке. Должны ли мы затем перевести этот голландский на английский или оставить его на голландском? Например, у нас есть 2 отдела: …
39 naming  translate 

8
Инвертирование оператора IF
Так что я программирую уже несколько лет, а недавно начал больше использовать ReSharper. Одна вещь, которую ReSharper всегда предлагает мне, - это «инвертировать» if, чтобы уменьшить вложенность ». Допустим, у меня есть этот код: foreach (someObject in someObjectList) { if(someObject != null) { someOtherObject = someObject.SomeProperty; } } И ReSharper …

3
Почему в Python нет функции «выравнивания» для списков?
Erlang и Ruby имеют функции для выравнивания массивов. Похоже, такой простой и полезный инструмент для добавления в язык. Можно сделать это: >>> mess = [[1, [2]], 3, [[[4, 5]], 6]] >>> mess.flatten() [1, 2, 3, 4, 5, 6] Или даже: >>> import itertools >>> mess = [[1, [2]], 3, [[[4, …

6
Жесткое кодирование строк, которые никогда не изменятся
Поэтому, пытаясь написать программу для спряжения глаголов (алгоритмически, а не через набор данных) для французского языка, я столкнулся с небольшой проблемой. Алгоритм спряжения глаголов на самом деле довольно прост для 17-ти или около того случаев глаголов и работает по определенному шаблону для каждого случая; таким образом, суффиксы сопряжения для этих …
39 design  strings 

13
Это неправильно использовать логический параметр для определения значений?
Согласно Неправильно ли использовать логический параметр для определения поведения? Я знаю важность избегания использования логических параметров для определения поведения, например: оригинальная версия public void setState(boolean flag){ if(flag){ a(); }else{ b(); } c(); } новая версия: public void setStateTrue(){ a(); c(); } public void setStateFalse(){ b(); c(); } Но как насчет …

3
Как подготовить начинающих программистов к современной (сложной) веб-среде?
В настоящее время наша компания разрабатывает приложения, в большинстве случаев предназначенные для веб-серверов Ruby on Rails и группы различных клиентов REST, от систем киосков в Java до встроенных устройств на C / C ++ (помимо интерфейсов для стандартных веб-браузеров). Нам нужно расширить нашу команду, и, не сумев найти хороших старших …

5
Проблемы с избеганием классов Smurf Naming с пространствами имен
Я вытащил отсюда термин «смурф» (номер 21). Чтобы избавить кого-то, кто не знаком с проблемой, именование Smurf - это префикс префикса группы связанных классов, переменных и т. Д. С общим префиксом, так что в итоге вы получаете «a SmurfAccountViewpass a SmurfAccountDTOto SmurfAccountController» и т. Д. Решение, которое я обычно слышал, …

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