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

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

4
API и функциональное программирование
Из моего (по общему признанию ограниченного) знакомства с функциональными языками программирования, такими как Clojure, кажется, что инкапсуляция данных играет менее важную роль. Обычно различные нативные типы, такие как карты или наборы, являются предпочтительной валютой представления данных поверх объектов. Кроме того, эти данные обычно неизменны. Например, вот одна из самых известных …

4
Управление параметрами в приложении ООП
Я пишу ООП приложения среднего размера на C ++ как способ применения принципов ООП. У меня есть несколько классов в моем проекте, и некоторые из них должны иметь доступ к параметрам конфигурации во время выполнения. Эти параметры считываются из нескольких источников при запуске приложения. Некоторые читаются из файла конфигурации в …

6
Преимущества шаблона стратегии
Почему полезно использовать шаблон стратегии, если вы можете просто написать свой код в случаях if / then? Например: у меня есть класс TaxPayer, и один из его методов рассчитывает налоги, используя разные алгоритмы. Так почему же он не может иметь if / then случаев и выяснить, какой алгоритм использовать в …

2
Можно ли избежать тестирования базовых классов?
У меня есть базовый класс с достаточным количеством «метапрограммирования», чтобы придать ему гибкость / абстракцию, которая должна быть достаточно общей. У меня есть много подклассов, использующих общие методы базового класса, и у меня есть ориентированные на поведение модульные тесты, охватывающие все случаи в каждом подклассе. Можно ли пропустить тестирование базового …

1
Почему для расчета количества элементов в массиве предпочитаете sizeof (element), а не sizeof (TYPE)?
Я читаю «Программирование на языке King KN» и нашел следующее утверждение: Мы обсудили использование выражения sizeof(a)/sizeof(a[0])для вычисления количества элементов в массиве. Выражение sizeof(a)/sizeof(t), где t - это тип элементов a, также будет работать, но оно считается плохой техникой. Почему это считается плохой техникой?
15 c  array 

1
Разница между потребителем / производителем и наблюдателем / наблюдаемой
Я работаю над дизайном приложения, которое состоит из трех частей: один поток, который отслеживает определенные события (создание файлов, внешние запросы и т. д.) N рабочих потоков, которые отвечают на эти события, обрабатывая их (каждый рабочий обрабатывает и использует одно событие, и обработка может занять переменное время) контроллер, который управляет этими …

3
Могу ли я коммерчески использовать лицензионное программное обеспечение GPL на своем сервере, если я только распространяю клиентское программное обеспечение?
Я понимаю правила GPL, согласно которым, если я распространяю какое-либо программное обеспечение с использованием кода GPL, этот код должен быть лицензирован в соответствии с GPL . Однако мне интересно, каковы правила в этом случае: я создаю сервис, где я буду продавать и распространять программное обеспечение на стороне клиента . Программное …
15 licensing  gpl 

5
Как лечить ошибки, которые пользователи считают фичей?
Вопрос : Как правильно исправить ошибку, которая, по мнению конечного пользователя, была функцией? Разработка : Я предполагаю, что если большой процент пользователей ожидал, что это будет функция, ее следует оставить «нефиксированной» или «фиксированной», чтобы быть более стабильной? Однако, что если очень маленький процент пользователей ожидает, что это будет функция ... …

3
В чем причина использования интерфейса по сравнению с типом с общими ограничениями?
В объектно-ориентированных языках, которые поддерживают параметры универсального типа (также называемые шаблонами классов и параметрическим полиморфизмом, хотя, конечно, каждое имя несет в себе различные коннотации), часто можно указать ограничение типа для параметра типа, например, для его наследования. из другого типа. Например, это синтаксис в C #: //for classes: class ExampleClass<T> where …

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

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

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

2
У Java есть JVM, что у C?
Я знаю, что C имеет компилятор, но что определяет производительность выполнения? Например, в блоке if else, что если в коде просто есть все ifs вместо if elses, что определяет, что все ifs будут запущены? В Java это будет JVM, но в C что такое компилятор выполнения?
15 java  c 

5
If Else - повторная кодовая логика
Мой босс дал мне проект с особой логикой. Я должен разработать веб-страницу, которая должна вести навигатор по многим случаям, пока он не достигнет продукта. Вот схема пути навигации по сайту: ВАЖНЫЙ! На странице Продукты навигатор может выбрать, какой фильтр он хочет. Если A, он / она ДОЛЖЕН пройти через B …

3
В чем разница между ref и out во время выполнения?
C # предоставляет ключевое слово refand outдля аргументов, передаваемых по ссылке. Семантика двух очень похожа. Единственная разница заключается в инициализации переменной: refтребует, чтобы переменная была инициализирована перед передачей функции, outнет. outтребует, чтобы переменная была инициализирована внутри функции, refнет. Варианты использования этих двух ключевых слов также почти одинаковы, и их слишком …

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