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

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

6
Это плохая практика - иметь столбец «Состояние записи» в таблице базы данных?
Сначала я должен уточнить, что столбец состояния не предназначен для отражения статуса элемента реального мира, представленного записью (строкой) в таблице. Скорее, он предназначен для отображения статуса самой записи. Он может быть простым, например, активным / неактивным, или сложным, например, «Утверждено», «Удалено», «Заблокировано», «Ожидание», «Отклонено» и т. Д. Статус может быть …

2
Должен ли я быть допускающим неизвестных параметров?
Я проектирую RESTful API и столкнулся с проблемой заголовка, для ясности: Должен ли я быстро потерпеть неудачу, если клиент отправляет нераспознанный параметр? Например, http://example.com/api/foo?bar=true&paula=bean Выше указан barдопустимый параметр, но paulaон не указан API. Нужно ли мне Предупредить клиента об ошибке Терпеть неудачу быстро Игнорируй это Если я предупреждаю клиента, я …
12 rest  api-design 

2
Haskell пути к проблеме 3n + 1
Вот простая проблема программирования от SPOJ: http://www.spoj.com/problems/PROBTRES/ . По сути, вас просят вывести самый большой цикл Коллатца для чисел от i до j. (Цикл Коллатца с числом $ n $ - это число шагов, которые в итоге получатся от $ n $ до 1.) Я искал способ Haskell для решения …

3
Лучше охранять вызов метода или сам метод?
Я пишу заявку, и я дошел до этого: private void SomeMethod() { if (Settings.GiveApples) { GiveApples(); } if (Settings.GiveBananas) { GiveBananas(); } } private void GiveApples() { ... } private void GiveBananas() { ... } Это выглядит довольно просто. Есть некоторые условия, и если они верны, методы вызываются. Тем не …

1
Много асинхронных вызовов против одного вызова API
Мы разрабатываем REST API, который, помимо прочего, будет использоваться веб-интерфейсом HTML5 через javascript. Приложение предназначено для использования в организации и обычно имеет около 300 пользователей, но мы хотим масштабировать до 1000 пользователей или около того. Обычно соединения с API будут осуществляться в локальной сети, поэтому качество и задержка соединения будут …
12 rest  api  ajax 

2
Почему поведенческий подтип неразрешим?
Работа Лискова в этой области была сосредоточена на поведенческих подтипах, которые помимо безопасности системы типов, обсуждаемой в этой статье, также требуют, чтобы подтипы сохраняли все инварианты, гарантируемые супертипами в некоторых контрактах. [3] Это определение подтипа обычно неразрешимо, поэтому его нельзя проверить с помощью средства проверки типов. От: http://www.wikiwand.com/en/Subtyping#/Function_types

1
Поддерживать API и использовать идиомы в порту
Я работаю над портом от Python до Rust и наткнулся на некоторый код, который не может быть выражен так же естественно в Rust, как в Python. Одним из случаев этого является использование параметров по умолчанию: class Foo: def __init__(self, a="Hello"): self._a = a В Rust вы можете реализовать это с …

3
Разве плохо обращаться к элементам массива доступа через арифметику указателей вместо оператора []?
Я только начал учиться программировать на C, и чтобы улучшить мое понимание указателей и массивов, я попытался ссылаться на элементы массива, не создавая вообще никакого указателя: for(k1 = 0; k1 < ROW; k1++){ for(k2 = 0; k2 < COLUMN; k2++){ array[k1][k2] = k1*COLUMN + k2 + 1; printf("[%d][%d] = %d\n", …

2
Рабочий процесс, редактирование вещей не в вашей текущей задаче
Обычно, когда я программирую, передо мной стоит ясная задача, но я нахожу надоедливые вещи, которые мне хотелось бы убрать по ходу дела. Здесь я вижу три варианта: Сделайте это позже (возможно, забыл / придется тратить время на добавление билета) Сделайте это сейчас и передайте это вместе с моей текущей работой …

2
Непрерывное развертывание с помощью gitignore
При непрерывном развертывании с Git, как вы обрабатываете игнорируемые файлы в gitignore? Эти файлы игнорируются по соображениям конфиденциальности (то есть не хотят, чтобы они передавались в другие удаленные репозитории, например GitHub), но если эти игнорируемые файлы не отправляются в репозиторий непрерывного развертывания, приложение не будет работать (так как игнорируемые файлы …

5
В чем концептуальное различие между окончательно и деструктором?
Во-первых, я хорошо понимаю, почему в C ++ нет конструкции «наконец»? но продолжительное обсуждение комментариев по другому вопросу, кажется, требует отдельного вопроса. Помимо проблемы, finallyзаключающейся в том, что в C # и Java в принципе может существовать только один раз (== 1) на область действия, и в одной области может …

2
Должны ли экземпляры Java 8 Stream всегда быть close () 'd?
Квот Javadoc : Потоки имеют метод BaseStream.close () и реализуют AutoCloseable, но практически все экземпляры потоков на самом деле не нужно закрывать после использования. Как правило, закрывать будут только те потоки, источником которых является канал ввода-вывода (например, те, которые возвращены Files.lines (Path, Charset)). Большинство потоков поддерживаются коллекциями, массивами или генерирующими …
12 java  resources  java8 

5
Как избежать нарушения SRP в классе для управления кэшированием?
Примечание. Пример кода написан на c #, но это не должно иметь значения. Я поставил c # в качестве тега, потому что не могу найти более подходящий. Это о структуре кода. Я читаю Чистый код и пытаюсь стать лучшим программистом. Я часто сталкиваюсь с трудностями следования принципу единой ответственности (классы …

1
Как делать рецензии на запросы GitHub?
Мы переходим от Bitbucket к GitHub, и мы сталкиваемся с одной проблемой, с которой мы сталкиваемся с рецензиями кода, которые работали на Bitbucket очень гладко, например: Автор открыл запрос на извлечение (GitHub: то же самое) Автор добавил своих коллег в качестве рецензентов (GitHub: борется здесь с несколькими сотрудниками ) Рецензент …

1
Git-ветвление из функциональной ветки для работы над подфункцией
В настоящее время мы находимся в следующей ситуации, когда ветвь компонента была разветвлена ​​для ветви подфункции (например, работа с внутренним и внешним интерфейсом для одной и той же функции): o | o development |\ | o feature-a | | | o | |\ | | o feature-a-sub | | | …
12 git  branching 

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