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

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

7
Следует ли вам использовать библиотеку, когда вы можете выполнить задачу без нее? [закрыто]
Я нахожусь в ситуации, когда я могу использовать плагин JavaScript с открытым исходным кодом для выполнения задачи. Но когда я попытался его использовать, я обнаружил, что мне нужно переделать много вещей из того, что я уже сделал, и это добавляет определенную сложность, по моему скромному мнению, проекту. Принимая во внимание, …

6
Дополнительная строка в блоке против дополнительного параметра в чистом коде
контекст В Чистом коде , на странице 35, написано Это подразумевает, что блоки внутри операторов if, операторов else, операторов while и т. Д. Должны быть длиной в одну строку. Вероятно, эта строка должна быть вызовом функции. Это не только уменьшает объем включаемой функции, но также добавляет документальное значение, поскольку функция, …
33 clean-code  solid 

8
Почему именно Java не допускает числовые условия, такие как if (5) {…}, если C делает?
У меня есть эти две маленькие программы: С #include <stdio.h> int main() { if (5) { printf("true\n"); } else { printf("false\n"); } return 0; } Джава class type_system { public static void main(String args[]) { if (5) { System.out.println("true"); } else { System.out.println("false"); } } } который сообщает об ошибке: …
33 java  c  type-systems 

6
Какова хорошая практика безопасности для хранения критически важной базы данных на ноутбуках разработчика?
У нас есть несколько подарков: Разработчикам нужна копия производственной базы данных на их машинах. Разработчики имеют пароль к указанной базе данных в файлах App.config. Мы не хотим, чтобы данные в указанной базе данных были скомпрометированы. Несколько предложенных решений и их недостатки: Полный диск-шифрование. Это решает все проблемы, но ухудшает производительность …

9
Как сделать дело для дорогих программистов?
В нашей компании нам нужно делать много, казалось бы, несложных вещей, таких как разработка Mobile UI. Допустим, опытные программисты стоят нам в 4 раза больше, чем новички. Оба в основном способны завершить, казалось бы, простые вещи за одно и то же время. Разница в том, что опытные программисты создают меньше …

4
Scrum - Чем заняты члены команды во время спринта
Таким образом, спринт-схватка - это фиксированный период времени, в течение которого должен быть реализован определенный набор функций. А команда Scrum состоит из всех людей, готовых предоставить эти функции, большинство из которых обычно являются разработчиками и тестировщиками. Установив эти правила, можно задаться вопросом, как занять всех этих людей на протяжении всего …
33 agile  scrum  sprint 

5
Как я могу создавать и применять контракты для исключений?
Я пытаюсь убедить руководство своей команды разрешить использование исключений в C ++ вместо возврата bool isSuccessfulили enum с кодом ошибки. Однако я не могу противостоять его критике. Рассмотрим эту библиотеку: class OpenFileException() : public std::runtime_error { } void B(); void C(); /** Does blah and blah. */ void B() { …
33 c++  exceptions 

1
raw, weak_ptr, unique_ptr, shared_ptr и т. д. Как правильно их выбрать?
В C ++ есть много указателей, но, если честно, через 5 лет или около того в программировании на C ++ (особенно с Qt Framework) я использую только старый необработанный указатель: SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); Я знаю, что есть много других «умных» указателей: // shared pointer: shared_ptr<SomeKindofObject> Object; // unique …

5
Почему удаление обычно намного сложнее реализовать, чем вставку во многие структуры данных?
Можете ли вы вспомнить какую-либо конкретную причину, по которой удаление обычно значительно сложнее реализовать, чем вставку для многих (большинства?) Структур данных? Быстрый пример: связанные списки. Вставка тривиальна, но удаление имеет несколько особых случаев, которые значительно усложняют ее. Самобалансирующиеся бинарные деревья поиска, такие как AVL и Red-black, являются классическими примерами болезненной …

9
Как сотрудники QA могут проверить логику кэширования, которую они не видят?
Я только что реализовал слой кэширования в своем веб-приложении, и теперь мне интересно, как QA должен его тестировать, поскольку кэширование прозрачно для пользователя. Одна из идей, которые у меня есть, - включить регистрацию в методы, которые вызывают код, который заполняет кэш, и записывать, когда объект извлекается из кеша и когда …
33 testing  caching 

6
Как обрабатывать начальное состояние в архитектуре, управляемой событиями?
В управляемой событиями архитектуре каждый компонент действует только тогда, когда событие отправляется через систему. Представьте себе гипотетическую машину с педалью тормоза и стоп-сигналом. Тормозные легкие повороты на , когда он получает brake_on событие, и прочь , когда он получает brake_off событие. Педаль тормоза отправляет событие brake_on, когда она нажата, и …

1
Почему база данных как очередь так плохо? [закрыто]
Я только что прочитал эту статью , и я в замешательстве. Давайте представим 1 веб-приложение и 1 отдельное приложение, выступающие в роли «работника», которые совместно используют одну и ту же базу данных . О, я сказал "делиться" .. но о чем статья предупреждает? : В-четвертых, разделение базы данных между приложениями …

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

10
Как справиться с проверкой кода на моем новом месте, когда я пришел из этой практики?
Команда в моей новой компании не имеет процесса проверки кода. Я приехал из компаний, где пересмотр кода является обязательной культурой, и поэтому я чувствую себя некомфортно, когда комментирую свой код, когда его никто не просматривает. Я твердо верю в то, что проверка кода - это способ улучшить качество и сэкономить …

5
Должен ли я инициализировать структуры C через параметр или возвращаемое значение? [закрыто]
Компания, в которой я работаю, инициализирует все свои структуры данных с помощью функции инициализации следующим образом: //the structure typedef struct{ int a,b,c; } Foo; //the initialize function InitializeFoo(Foo* const foo){ foo->a = x; //derived here based on other data foo->b = y; //derived here based on other data foo->c = …

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