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

53
Почему бы не выставить первичный ключ

В моем образовании мне говорили, что ошибочно предлагать пользователю фактические первичные ключи (не только ключи БД, но и все первичные средства доступа). Я всегда думал, что это проблема безопасности (потому что злоумышленник может попытаться прочитать что-то не свое). Теперь я должен проверить,...

53
Является ли совет старших программистов всегда использовать книги хорошей идеей? [закрыто]

Я младший разработчик и работаю в этой отрасли всего 5 лет. В моей нынешней компании есть старший, назовем его Infestus. Изредка мне дают возможность сиять и делать что-то совершенно новое с нуля. Одним из последних примеров было то, что мне пришлось сделать синглтон в многопоточном приложении. Я...

53
Как языки с типами Maybe вместо NULL обрабатывают краевые условия?

Эрик Липперт высказал очень интересную мысль в своем обсуждении того, почему C # использует тип, nullа не Maybe<T>тип : Согласованность системы типов важна; можем ли мы всегда знать, что необнуляемая ссылка ни при каких обстоятельствах не считается недействительной? Как насчет конструктора...

53
Стоит ли неизменность, когда нет параллелизма?

Кажется, что безопасность потоков всегда / часто упоминается как основное преимущество использования неизменяемых типов и особенно коллекций. У меня есть ситуация, когда я хотел бы убедиться, что метод не будет изменять словарь строк (которые являются неизменными в C #). Я хотел бы ограничить вещи...

53
Когда типовые испытания в порядке?

Предполагая язык с некоторой присущей безопасности типов (например, не JavaScript): Учитывая метод, который принимает a SuperType, мы знаем, что в большинстве случаев, когда у нас может возникнуть искушение выполнить тестирование типа для выбора действия: public void DoSomethingTo(SuperType o) { if...

53
Должен ли я передать имена файлов, которые будут открыты, или открыть файлы?

Предположим, у меня есть функция, которая работает с текстовым файлом - например, читает из него и удаляет слово «а». Я мог бы либо передать ему имя файла и обработать открытие / закрытие в функции, либо я мог бы передать ему открытый файл и ожидать, что тот, кто его вызовет, будет иметь дело с его...

53
Соглашения о присвоении имен протоколу Swift [закрыто]

Исходя из в основном фона c #, я привык использовать термин «интерфейс» для описания объекта без реализации, определяющей поведение. В c # соглашение заключается в добавлении имен интерфейсов с помощью «I», например IEnumerable, и т. Д. Конечно, у концепции разные названия на разных языках. В Swift...

53
Что произойдет, если функция, включенная в разработку, будет отложена руководством?

Недавно у нас возникла проблема, из-за которой руководство нашего приложения отложило функцию для нашего веб-приложения (автоматическую регистрацию), потому что они чувствовали, что начало было слишком «холодным», но они хотели, чтобы все другие функции, над которыми мы работали, были запущены....

53
Почему основные сильные статические ООП-языки препятствуют наследованию примитивов?

Почему это нормально и в основном ожидается: abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... пока это не нормально и никто не жалуется concrete type Name : string { } concrete type Index : int { } concrete type Quantity : int {...

53
Это плохая практика, чтобы не удалять избыточные файлы сразу из VCS, а вместо этого помечать их как «Для удаления» с комментариями в первую очередь?

Я хотел знать, можно ли считать, что мой подход к исходным файлам, которые необходимо удалить из системы контроля версий, считается плохой практикой. Я хочу объяснить это вам на основе этого примера: Недавно я очень разозлился, потому что мне пришлось утомительно разбирать классы Java в программе,...

53
Преимущества разработки с использованием Docker сводятся на нет при использовании Java по сравнению с другими языками, более близкими к двоичным файлам Unix?

У меня был друг, который сказал: Докер потрясающий. Вы можете использовать его для репликации производства и всех его причуд на вашем локальном компьютере. Затем вы можете быстро развернуть этот экземпляр через все промежуточные рабочие процессы . Теперь это было бы правдой, если бы разработчики...

53
Agile Practices: проверка кода - провалить проверку или поднять проблему?

В конце двухнедельного спринта, и у задачи есть проверка кода, в обзоре мы обнаруживаем функцию, которая работает, доступна для чтения, но она довольно длинная и имеет несколько запахов кода. Простая работа рефакторинга. В противном случае задача соответствует определению выполненного. У нас есть...

53
Как перестать тратить время на разработку архитектуры [закрыто]

Я недавно закончил университет и начал работать программистом. Мне не трудно решить «технические» проблемы или выполнить отладку с помощью вещей, которые, я бы сказал, имеют 1 решение. Но, кажется, есть класс проблем, у которых нет единственного очевидного решения - такие вещи, как архитектура...

52
Что я должен сделать, чтобы быть независимым от языка?

К настоящему времени я работаю с asp.net и C #. Я неплохо поработал и на Java. Я планирую свою карьеру таким образом, чтобы когда-нибудь стать не зависимым от языка. Какие вещи мне нужно выучить? Во-первых, парадигмы ООП, как это говорит о дизайне класса. Есть ли...

52
Что такое докторская степень хорошо для в индустрии программного обеспечения? [закрыто]

Я программист-самоучка и только что получил степень по информатике, чтобы пополнить свои знания и заполнить пробелы. Тем не менее, я уже обсуждаю направление моего образования. Я хочу 4-летнюю степень бакалавра, но после этого я не уверена: стоит ли получать степень магистра наук? Как насчет...

52
Почему DirectX использует левостороннюю систему координат?

Я думал о публикации в Stack Overflow, но этот вопрос мне кажется слишком субъективным, поскольку я не могу придумать разумного технического объяснения выбора Microsoft в этом вопросе. Но этот вопрос беспокоил меня так долго, и проблема продолжает появляться в одном из моих проектов, и я никогда не...

52
Как вы объясните рефакторинг нетехническому человеку?

Как вы объясните рефакторинг (и технический долг) нетехническому человеку (обычно PHB или клиенту)? («Что, это будет стоить мне месяц вашей работы без видимой разницы ?!») ОБНОВЛЕНИЕ Спасибо за все ответы до сих пор, я думаю, что этот список предоставит несколько полезных аналогий, на которые мы...

52
Я студент CS, и, честно говоря, я не понимаю книги Кнута [закрыто]

Я наткнулся на эту цитату из Билла Гейтса: «Вы обязательно должны отправить мне резюме, если вы можете прочитать все это». Он говорил о книгах по искусству программирования . Так что мне было довольно любопытно, и я хочу все это прочитать. Но, честно говоря, я этого не понимаю. Я действительно не...