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

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

1
Почему это называется управлением конфигурацией программного обеспечения (SCM)?
Когда я думаю о конфигурации программного обеспечения, я думаю о файле, который читается во время выполнения - указанный файл будет содержать такие вещи, как порт, который сервер может использовать, использовать ли шифрование, и пути различных ресурсов. Когда я впервые столкнулся с «управлением конфигурацией программного обеспечения», я подумал, что это означает …

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

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

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

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

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

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

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

2
Гранулярность исключений
Я столкнулся с дебатами между несколькими друзьями и мной. Они предпочитают общие исключения, такие как ClientErrorExceptionи ServerErrorExceptionс подробностями в качестве полей исключения, тогда как я предпочитаю делать вещи более конкретными. Например, у меня может быть несколько исключений, таких как: BadRequestException AuthenticationFailureException ProductNotFoundException Каждый из них построен на основе кода ошибки, …

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

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

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

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

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

3
Как бы я разработал метод TryParse, который предоставляет подробную информацию в случае ошибки синтаксического анализа?
При анализе пользовательского ввода обычно рекомендуется не генерировать и перехватывать исключения, а использовать методы проверки. В .NET BCL это будет разница между, например, int.Parse(создает исключение для недопустимых данных) и int.TryParse(возвращает falseнедопустимые данные). Я создаю свой собственный Foo.TryParse(string s, out Foo result) метод, и я не уверен насчет возвращаемого значения. Я …
9 c#  .net  api-design 

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