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

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

4
Какой самый элегантный способ написать метод «Try» в C # 7?
Я пишу тип реализации Queue, в котором есть TryDequeueметод, который использует шаблон, аналогичный различным TryParseметодам .NET , где я возвращаю логическое значение, если действие выполнено успешно, и использую outпараметр для возврата фактического значения в очереди. public bool TryDequeue(out Message message) => _innerQueue.TryDequeue(out message); Теперь я люблю избегать outпараметров, когда могу. …
21 c# 

6
Почему неправильно комментировать код, а затем постепенно удалять его, чтобы отслеживать, что я уже сделал и что еще предстоит сделать?
Всякий раз, когда я узнаю, что большую часть моего кода необходимо изменить, либо потому, что он некорректен, либо потому, что его нужно адаптировать к серьезным архитектурным изменениям, вызванным другими причинами, я обычно делаю это: Я закомментирую весь код, который, я подозреваю, мне придется изменить. Я рассматриваю закомментированный код как своего …

4
Используйте абстрактный класс в C # как определение
Как разработчик C ++ я довольно привык к заголовочным файлам C ++ и считаю полезным иметь какую-то принудительную «документацию» внутри кода. У меня обычно бывает плохое время, когда мне приходится читать код C # из-за этого: у меня нет такой ментальной карты класса, с которой я работаю. Давайте предположим, что …

3
Является ли нормальным проектирование, позволяющее полностью отделить внутренние и внешние веб-приложения и позволить им взаимодействовать с (JSON) REST API?
Я создаю новое бизнес-веб-приложение и хочу добиться: Используйте лучшие технологии из соответствующих областей. Я хочу надежный каркас с твердым ORM. И мне нужна самая совершенная инфраструктура SPA (одностраничное приложение) с использованием самых современных функций HTML и Javascript для приложения веб-интерфейса. Предоставлять бэкэнд-сущности и бизнес-сервисы для использования из различных типов приложений, …

5
Следует ли перемещать нетривиальные условные операторы в раздел инициализации циклов?
Я получил эту идею из этого вопроса на stackoverflow.com Следующий шаблон является распространенным: final x = 10;//whatever constant value for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) { //...do something } Суть, которую я пытаюсь сделать, заключается в том, что условное утверждение является чем-то сложным и не меняется. …

5
Как исправить ошибку в тесте, после написания реализации
Каков наилучший способ действий в TDD, если после правильной реализации логики тест по-прежнему не проходит (потому что в тесте есть ошибка)? Например, предположим, что вы хотели бы разработать следующую функцию: int add(int a, int b) { return a + b; } Предположим, мы разработали его в следующие шаги: Написать тест …
21 tdd  mistakes 

3
Как обрабатывать ошибки в конструкторе класса C ++?
У меня есть класс CPP, конструктор которого выполняет некоторые операции. Некоторые из этих операций могут потерпеть неудачу. Я знаю, что конструкторы ничего не возвращают. Мои вопросы Разрешено ли выполнять некоторые операции, кроме инициализации членов в конструкторе? Можно ли сказать вызывающей функции, что некоторые операции в конструкторе потерпели неудачу? Могу ли …

2
Оптимизация git-репо, содержащего большие двоичные файлы
Наш проект составляет около 11 ГБ, 10 из которых являются двоичными данными (.png изображения). Следовательно, операции a git diffили git statusзанимают больше минуты. К счастью, все файлы данных разделены на папки с чудесным именем data. Назначение: «Избегайте сжатия, различий и других дорогостоящих операций с двоичными файлами». Рассматривалось разделение проекта на …
21 git  binary 

3
Каким должен быть тип данных токенов, которые лексер возвращает своему парсеру?
Как сказано в заголовке, какой тип данных должен возвращать / передавать синтаксический анализатор? Читая статью о лексическом анализе, которая есть в Википедии, она заявила, что: В информатике лексический анализ - это процесс преобразования последовательности символов (например, в компьютерной программе или веб-странице) в последовательность токенов ( строк с определенным «значением»). Однако, …
21 data-types  lexer  flex 

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

3
Как называется «спецификация» функции / метода?
Я почти уверен, что есть специальное имя для «спецификации» функции / метода. Это слово относится к сколько аргументов нужно порядок аргументов какие аргументы являются необязательными Есть ли название для этого?

4
Почему папка Git .git / objects / подразделяется на многие папки с префиксами SHA?
Git внутренне хранит объекты (Blobs, деревья) в .git/objects/папке. На каждый объект может ссылаться хеш SHA1, который вычисляется из содержимого объекта. Тем не менее, объекты не хранятся внутри .git/objects/папки напрямую. Вместо этого каждый объект хранится в папке, которая начинается с префикса его хэша SHA1. Таким образом, объект с хешем b7e23ec29af22b0b4e41da31e868d57226121c84будет храниться …

6
Является ли научный код достаточно другой областью, чтобы игнорировать общие стандарты кодирования?
В последнее время я пытался обдумать следующий факт. С одной стороны, существует множество руководств и стандартов кодирования для того, что считается «здоровым», «чистым», «хорошо написанным» и т. Д. Кодом. См. «Чистый код», который также широко обсуждается здесь. Пример правила: 7 длинных методов и 1 или 2 уровня отступа. Код, который …

2
Были ли типы переменной ширины заменены фиксированными типами в современном C?
Сегодня я наткнулся на интересный момент в обзоре Code Review . В этом ответе @Veedrac рекомендовал заменить типы переменного размера (например, intи long) на типы фиксированного размера, такие как uint64_tи uint32_t. Цитата из комментариев этого ответа: Размеры int и long (и, следовательно, значения, которые они могут содержать) зависят от платформы. …

6
Должен ли метод быть прощающим с аргументами, которые передаются? [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 4 года назад . Предположим, у нас есть метод, foo(String bar)который работает только со строками, которые …
21 java  parameters 

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