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

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

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

3
Работа через принцип единой ответственности (SRP) в Python, когда звонки стоят дорого
Некоторые базовые точки: Вызовы методов Python «дороги» из-за их интерпретируемой природы . Теоретически, если ваш код достаточно прост, разбивка кода Python оказывает негативное влияние, помимо читабельности и повторного использования ( что является большим преимуществом для разработчиков, а не для пользователей ). Принцип единой ответственности (SRP) делает код читаемым, его проще …

5
Моя команда боится сущностей реляционных баз данных с отношениями внешних ключей, и я не понимаю, почему
Я относительно новичок в колледже, так что большая часть моего знакомства с реляционными базами данных происходит из моего курса по базам данных, где что-либо не в BCNF или 3NF - это пародия. Конечно, это один крайний край, но моя команда на работе действительно, кажется, доводит его до совершенно противоположного конца. …

6
DDD встречает ООП: Как реализовать объектно-ориентированный репозиторий?
Типичная реализация хранилища DDD выглядит не очень хорошо, например, save()метод: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Инфраструктурная часть: package com.example.infrastructure; // imports... public class JdbcProductRepo implements ProductRepo { private …

2
Почему базовый класс должен иметь здесь виртуальный деструктор, если производный класс не выделяет необработанную динамическую память?
Следующий код вызывает утечку памяти: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) { …

2
Определение «Готово» для нескольких групп разработчиков, работающих над одним и тем же продуктом.
Один из скрам-тестов содержит вопрос об определении, лучше всего описывающем «Готово», когда несколько групп разработчиков выполняют работу над одним и тем же продуктом. Правильный ответ гласит, что эти команды разработчиков должны иметь такое определение «Готово», которое может сделать их совместную работу потенциально выпуская. Что не ясно для меня из правильного …
12 agile  scrum 

1
Использование классов-друзей для инкапсуляции закрытых функций-членов в C ++ - хорошая практика или злоупотребление?
Итак, я заметил, что можно избежать размещения частных функций в заголовках, выполнив что-то вроде этого: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever …

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

4
Как сделать лучшие обзоры кода при больших запросах?
Отказ от ответственности: Есть несколько похожих вопросов, но я не нашел ни одного, который касался бы конкретно проблем, с которыми вы сталкиваетесь при рассмотрении большого запроса на извлечение. проблема Я чувствую, что мои проверки кода могут быть сделаны лучше. Я особенно говорю о больших обзорах кода с большим количеством изменений …

1
Избыточный код отправляется по трубке с микро-интерфейсами
Насколько я понимаю, микро-интерфейсы заключаются в том, что ключевая проблема, которую они решают, заключается в том, чтобы помочь предприятиям создать несколько, возможно, разрозненных групп, работать над отдельными компонентами / небольшими приложениями, которые будут использоваться для создания большого веб-приложения. Здесь ключевой проблемой, которая решается, является способность нескольких команд работать независимо и …

4
структура с бессмысленным значением по умолчанию
В моей системе я часто работаю с кодами аэропортов ( "YYZ", "LAX", "SFO"и т.д.), они всегда находятся в том же формате (3 письма, представленный в верхнем регистре). Система обычно имеет дело с 25-50 из этих (разных) кодов на запрос API, с общим количеством распределений более тысячи, они проходят через многие …

5
Имеет ли смысл определять интерфейс, если у меня уже есть абстрактный класс?
У меня есть класс с некоторыми функциями по умолчанию / общий доступ. Я использую abstract classдля этого: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new …

5
Должен ли сервис генерировать исключение или возвращаться, если для удаления не задано
У меня есть кусок кода, который может быть представлен как: public class ItemService { public void DeleteItems(IEnumerable<Item> items) { // Save us from possible NullReferenceException below. if(items == null) return; foreach(var item in items) { // For the purpose of this example, lets say I have to iterate over them. …

5
В каких условиях (если таковые имеются) целесообразно запрашивать два сервера и использовать только самый быстрый ответ?
Я спросил, что теперь является вопросом, удаленным сообществом, на SO о том, почему кто-то использует javascript Promise.race, и пользователь с высокими репутациями прокомментировал это: Если у вас есть две службы, которые вычисляют какое-то значение, вы можете запрашивать их обе параллельно и использовать, какое значение всегда возвращается первым, вместо того, чтобы …

1
Есть ли способ сделать библиотеку .Net для Windows и Mac, с зависимыми от платформы ссылками?
Мы пытаемся разработать кроссплатформенное приложение для настольных компьютеров (Windows и Mac) с использованием C #. Приложение содержит огромное количество материалов, зависящих от платформы, и руководство нашей команды хочет, чтобы мы написали весь этот код на C #. Самый простой способ сделать это - написать обертки на C ++ и просто …

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