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

9
Длинный рефакторинг метода: оставление как есть и разделение на методы против использования локальных функций

Предположим, у меня есть длинный метод, подобный этому: public void SomeLongMethod() { // Some task #1 ... // Some task #2 ... } Этот метод не имеет повторяющихся частей, которые должны быть перемещены в отдельный метод или локальную функцию. Есть много людей (включая меня), которые думают, что...

9
Есть ли причина не изменять значения параметров, передаваемых по значению?

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

9
Микросервисы: MonolithFirst?

Я исследовал микросервисные архитектуры, пытаясь получить общее представление обо всех плюсах и минусах, когда и почему, и т. Д. Большая часть информации, которую я читаю / смотрю, поступает из ThoughtWorks (Мартин Фаулер, Нил Форд и др.). аль). Большинству работ Мартина Фаулера по этому вопросу...

9
что может пойти не так в контексте функционального программирования, если мой объект изменчив?

Я вижу преимущества изменчивых по сравнению с неизменяемыми объектами, такими как неизменяемые объекты, которые устраняют много трудностей при устранении неполадок в многопоточном программировании из-за общего и записываемого состояния. Напротив, изменяемые объекты помогают иметь дело с...

9
Гранулярность исключений

Я столкнулся с дебатами между несколькими друзьями и мной. Они предпочитают общие исключения, такие как ClientErrorExceptionи ServerErrorExceptionс подробностями в качестве полей исключения, тогда как я предпочитаю делать вещи более конкретными. Например, у меня может быть несколько исключений,...

9
За-если антипаттерн

В этом блоге я читал об анти-паттерне «за-если», и я не совсем уверен, что понимаю, почему это анти-паттерн. foreach (string filename in Directory.GetFiles(".")) { if (filename.Equals("desktop.ini", StringComparison.OrdinalIgnoreCase)) { return new StreamReader(filename); } } Вопрос 1: Это из-за...

9
Должны ли права доступа и роли быть включены в полезную нагрузку JWT?

Должна ли информация о разрешениях и ролях клиента быть включена в JWT? Наличие такой информации в токене JWT будет очень полезно, так как каждый раз, когда приходит действительный токен, будет легче извлечь информацию о разрешении о пользователе, и не будет необходимости вызывать базу данных для...

9
Как реализовать процесс разработки со студентами колледжа

На моей первой работе в качестве разработчика программного обеспечения моя команда использовала Agile / Scrum для управления рабочим процессом нашего проекта, и это работало довольно хорошо. У меня были опытные наставники, которые поставили меня на правильный путь - я в долгу перед ними. Я работал...

9
Имя техники для вывода аргументов типа параметра типа?

Настройка: Давайте предположим, что у нас есть вызываемый Iteratorтип с параметром типа Element: interface Iterator<Element> {} Тогда у нас есть интерфейс, Iterableкоторый имеет один метод, который будет возвращать Iterator. // T has an upper bound of Iterator interface Iterable<T:...

9
Шаблон репозитория против создания объекта DAL

Насколько я узнал, IRepositoryдолжен содержать CRUD. Тогда мы наследуем это IRepositoryв наших других интерфейсов , как IProductи реализовать IProductконкретный класс ProductRepository, с методами , как GetAllProducts(), Top5Products(). Мы также можем сделать то же самое с n-уровневой архитектурой....

9
Намерен ли Дейкстра на модуляризацию кода, когда писал о разделении интересов?

Сначала я прочитал отрывок из статьи Эдсгера В. Дейкстры 1974 года «О роли научной мысли»: Позвольте мне попытаться объяснить вам, что на мой вкус характерно для всего разумного мышления. Дело в том, что человек желает углубленно изучать аспект своего предмета изолированно ради своей собственной...

9
Почему использование оператора присваивания или циклов не рекомендуется в функциональном программировании?

Если моя функция удовлетворяет ниже двум требованиям, я полагаю, что функция, Sum возвращающая суммирование элементов в списке, где элемент оценивается как истинное для данного условия, может считаться чистой функцией, не так ли? 1) Для данного набора i / p, то же o / p возвращается независимо от...

9
Рефакторинг - уместно ли просто переписать код, если все тесты пройдены?

Недавно я смотрел «Все мелочи» из RailsConf 2014. Во время этого выступления Сэнди Метц реорганизует функцию, которая включает в себя большой вложенный оператор if: def tick if @name != 'Aged Brie' && @name != 'Backstage passes to a TAFKAL80ETC concert' if @quality > 0 if @name !=...

9
Почему это называется управлением конфигурацией программного обеспечения (SCM)?

Когда я думаю о конфигурации программного обеспечения, я думаю о файле, который читается во время выполнения - указанный файл будет содержать такие вещи, как порт, который сервер может использовать, использовать ли шифрование, и пути различных ресурсов. Когда я впервые столкнулся с «управлением...

9
Нужно ли мне использовать фиксированную точку, чтобы гарантировать, что компьютеры получат тот же результат для математических операций?

Мне сказали, что большинство современных компьютеров следуют одному и тому же стандарту с плавающей запятой, означает ли это, что все они получат один и тот же ответ с плавающей запятой для данной математической операции, если входные данные одинаковы? Я спрашиваю, потому что я исследую создание...

9
Что означает «НАКЛОН» в комментарии?

Я читаю « Чистый код » Роберта С. Мартина, и эта фраза TILTнеобъяснимым образом появляется в некоторых примерах кода. Пример (это на Java, кстати): ... public String errorMessage() { switch (status) { case ErrorCode.OK: // TILT - Should not get here. return ""; case ErrorCode.UNEXPECTED_ARGUMENT:...

9
Лучшая практика - Обтекание, если вокруг вызова функции против добавления раннего выхода, если защита в функции

Я знаю, что это может быть очень специфично для конкретного случая, но я слишком часто задаюсь этим вопросом. Есть ли вообще предпочтительный синтаксис. Я не спрашиваю, каков наилучший подход, когда в функции, я спрашиваю, должен ли я выйти рано или просто не вызывать функцию. Обтекание, если...

9
Стоит ли проводить комплексные и интеграционные тесты для не критически важных задач?

Хорошо известно, что комплексные и интеграционные тесты являются дорогостоящими. Конечно, если мы разрабатываем приложения, в которых люди могут умереть, если что-то пойдет не так, это стоит вложений. Однако в приложениях, где ошибки не являются концом света, не будет ли дешевле вообще пропустить...

9
Наследование против композиции для шахматных фигур

Быстрый поиск этого стека обмена показывает, что в целом состав обычно считается более гибким, чем наследование, но, как всегда, это зависит от проекта и т. Д., И бывают случаи, когда наследование является лучшим выбором. Я хочу создать трехмерную шахматную игру, в которой каждая фигура имеет...

9
Может ли переименование метода сохранить инкапсуляцию?

Я читал эту страницу о том, когда геттеры / сеттеры оправданы, и ОП дал следующий пример кода: class Fridge { int cheese; void set_cheese(int _cheese) { cheese = _cheese; } int get_cheese() { return cheese; } } void go_shopping(Fridge fridge) { fridge.set_cheese(fridge.get_cheese() + 5); } В...