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

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

6
Как удалить функцию или функцию при использовании TDD
В текстах о TDD я часто читал об «устранении дублирования» или «улучшении читаемости» на этапе рефакторинга. Но что заставляет меня удалить неиспользуемую функцию? Например, скажем, есть класс Cс методами a()и b(). Теперь я думаю, что было бы неплохо иметь метод, f()который используется C. Фактически f()заменяет все вызовы, b()за исключением модульных …

3
Дублирование констант между тестами и рабочим кодом?
Хорошо или плохо дублировать данные между тестами и реальным кодом? Например, предположим, у меня есть класс Python, FooSaverкоторый сохраняет файлы с определенными именами в заданный каталог: class FooSaver(object): def __init__(self, out_dir): self.out_dir = out_dir def _save_foo_named(self, type_, name): to_save = None if type_ == FOOTYPE_A: to_save = make_footype_a() elif type …

4
«Запоминание» значений в функциональном программировании
Я решил взять на себя задачу изучения функционального программирования. Пока что это был взрыв, и я «видел свет» как бы. К сожалению, на самом деле я не знаю ни одного функционального программиста, от которого я мог бы откинуть вопросы. Представляем Stack Exchange. Я учусь на курсе по разработке веб-приложений, но …

11
Всегда ли следует использовать лучшие методы кодирования [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 3 года назад . При кодировании программного обеспечения должна ли архитектура всегда быть передовой практикой или практической практикой …

8
Есть ли более простой способ проверить валидацию аргумента и инициализацию поля в неизменяемом объекте?
Мой домен состоит из множества простых неизменяемых классов, таких как: public class Person { public string FullName { get; } public string NameAtBirth { get; } public string TaxId { get; } public PhoneNumber PhoneNumber { get; } public Address Address { get; } public Person( string fullName, string nameAtBirth, …
20 c#  unit-testing 

4
Использование плоских файлов против базы данных / API в качестве транспорта между внешним и внутренним интерфейсом
У меня есть приложение, которое вызвало довольно жаркую дискуссию между парой разработчиков. По сути, он разделен на веб-слой и внутренний слой. Веб-слой собирает информацию с помощью простой веб-формы и сохраняет эти данные в виде документа JSON (буквально в виде файла .json) в папку наблюдения, используемую серверной частью. Серверная часть опрашивает …

5
Почему тип связан с его строителем?
Недавно я удалил свой Java- ответ на Code Review , который начался так: private Person(PersonBuilder builder) { Стоп. Красный флаг. PersonBuilder будет строить Person; это знает о Человеке. Класс Person не должен ничего знать о PersonBuilder - это просто неизменный тип. Вы создали круговую связь здесь, где A зависит от …

5
Не нарушают ли частные случаи с запасными вариантами принцип подстановки Лискова?
Допустим, у меня есть интерфейс, FooInterfaceкоторый имеет следующую подпись: interface FooInterface { public function doSomething(SomethingInterface something); } И конкретный класс, ConcreteFooкоторый реализует этот интерфейс: class ConcreteFoo implements FooInterface { public function doSomething(SomethingInterface something) { } } Я хотел бы ConcreteFoo::doSomething()сделать что-то уникальное, если ему передан специальный тип SomethingInterfaceобъекта (скажем, он …

3
Каковы причины того, почему стек Java / Linux не может быть «в реальном времени»?
Я часто слышал, как разработчики упоминали, что Java не может « делать в реальном времени », то есть приложение Java, работающее в Linux, не может отвечать требованиям детерминированной системы реального времени, такой как что-то, работающее в RIOT-OS и т. Д. Я пытаюсь понять, почему . Моя SWAG говорит мне, что …
20 java  linux  real-time 

1
В чем разница между <? расширяет Foo> и <Foo>
Кажется, у меня неправильное понимание разницы между &lt;Foo&gt;и &lt;? extends Foo&gt;. Из моего понимания, если бы мы имели ArrayList&lt;Foo&gt; foos = new ArrayList&lt;&gt;(); Это указывает на то, что объекты этого типа Fooмогут быть добавлены в этот список массивов. Поскольку подклассы Fooтакже имеют тип Foo, они также могут быть добавлены без …
20 java  generics 

1
Каковы стандарты работы с множественным числом слов в вашем коде? [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 4 года назад . Когда вы используете переменные, у которых их множественное и единственное числа совпадают, как вы …

3
Как хранить заказанную информацию в реляционной базе данных
Я пытаюсь понять, как правильно хранить упорядоченную информацию в реляционной базе данных. Пример: Скажем, у меня есть плейлист, состоящий из песен. Внутри моей реляционной базы данных у меня есть таблица Playlists, содержащая некоторые метаданные (имя, создатель и т. Д.). У меня также есть таблица с именем Songs, playlist_idа также информация …

2
Почему Swift не требует точек с запятой? [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 4 года назад . Обычно я пишу код на языке C # или Objective-C и недавно взял на …

1
Построение и создание артефактов на Haskell аналогично Maven
Я долгое время был разработчиком Java, но недавно я присоединился к команде Haskell. В мире Java, если у вас большой проект, над которым работают несколько команд, общий подход заключается в использовании сервера артефактов, такого как Maven, для упрощения и ускорения разработки. Многочисленные инструменты сборки, такие как Ant, Maven, Gradle, могут …

4
Заменяют ли именованные аргументы шаблон построителя?
При использовании языка, который поддерживает именованные и необязательные аргументы, шаблон компоновщика больше не имеет практического применения? Строитель: new Builder(requiredA, requiredB).setOptionalA("optional").Build(); Необязательные / именованные аргументы: new Object(requiredA, requiredB, optionalA: "optional");

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