Что самое странное кодировало правило стандарта, что Вы были вынуждены следовать? [закрытый]

173
задан 6 revs 23 May 2017 в 11:54
поделиться

107 ответов

Только одна переменная может быть объявлена на логическую строку. [Объяснение: Многократные объявления на строку приводят к неточному количеству строки кода.]

2
ответ дан 2 revs, 2 users 67% 23 November 2019 в 20:33
поделиться

Используйте _ или m_ перед глобальной переменной, когда можно будет просто использовать ключевое слово это. когда необходимо получить доступ к глобальной переменной...

1
ответ дан Patrick Desjardins 23 November 2019 в 20:33
поделиться

Все документы в моей компании управляются версией. Пока неплохо.

, Но для Каждого файла, после первого согласия на CVS, необходимо сразу добавить два тега к нему: CRE (для Создания) и DEV001 (для 1-го Цикла разработки). Как будто это являющийся первой версией самого файла не было достаточно.

После этого, процесс становится немного более разумным, к счастью.

2
ответ дан schonarth 23 November 2019 в 20:33
поделиться

Мне не разрешают использовать this-> для ссылки на локальные переменные в нашем коде C++...

2
ответ дан Hans 23 November 2019 в 20:33
поделиться

Весь имена файлов должны быть в нижнем регистре...

2
ответ дан jmcd 23 November 2019 в 20:33
поделиться

В месте я в настоящее время работаю, официальный стандарт кодирования предусматривает максимальную длину строки восьмидесяти символов. Рациональное должно было позволить бумажным копиям кода быть отформатированными. Само собой разумеется, ведомый к очень нечетному размещению кода. Я работал для устранения этого стандарта, главным образом через аргумент, 'когда был прошлый раз, Вы сделали бумажную копию кода?' Удобочитаемость теперь по сравнению с шансом создания бумажной копии на восьмидесяти столбцах DMP?

Skizz

3
ответ дан 2 revs, 2 users 80% 23 November 2019 в 20:33
поделиться

Никакой венгр вообще.

хорошо, Вы думаете, что это плохо почему? Ну, потому что они полагали, что это было венгерским:

int foo;
int *pFoo;
int **hFoo;

Теперь, любой олдскульный программист Mac не забудет иметь дело с Handles и Ptrs. Вышеупомянутое является самым легким способом сказать им независимо - пример кода Apple полон его, и Apple была едва рассадником Hungarianism. И поэтому когда я должен был написать некоторый олдскульный код Mac, естественно я сделал это и подстрелил его для того, чтобы быть венгром.

, Но никто не мог предложить альтернативную схему именования, которая сохранила ясность трех переменных, относящихся к тем же данным по-разному, таким образом, я регистрировал его как есть.

3
ответ дан 23 November 2019 в 20:33
поделиться

В крупнейшем британском банке я был введен для действия как полномочия дизайна в новой системе.NET.

Их правила указывают, что таблицы базы данных должны были быть максимумом 8 символов в длину с кодом проекта (5 кодов цифры) как префикс.

Они осуществляли старые правила DB2 на проекты Windows вздох

3
ответ дан blowdart 23 November 2019 в 20:33
поделиться

"Парни, которые записали компилятор, вероятно, намного более умны, чем Вы, так не пробуйте что-то умное", что один сказанный документ направляющей линии (не совсем буквально).

0
ответ дан Niklas Winde 23 November 2019 в 20:33
поделиться

Худшее - это безымянное место, где я до сих пор зарабатываю деньги, здесь нет стандартов. Каждая программа - это новое приключение.

К счастью, мы с другим подрядчиком медленно обучаем реальных сотрудников и навязываем некую структуру беспорядку.

2
ответ дан 23 November 2019 в 20:33
поделиться

На моей последней работе мой начальник всегда соблюдал закон Мерфи:

«Все, что может пойти не так, пойдет не так».

Я думаю, что мы этого не сделали » Я не тороплюсь делать какие-то быстрые исправления в коде или что-то в этом роде. И теперь у меня в голове постоянно эта фраза.

1
ответ дан 23 November 2019 в 20:33
поделиться

Мой старый босс настаивал на том, чтобы мы использовали константы вместо перечислений, но никогда не объяснял причины, и во всех сценариях они использовались, перечисление имело больше смысла.

Но лучший из них настаивал на том, что все имена таблиц должны быть в единственном числе, и тогда классы в коде также будут особенными. Но они не только представляли объект, например пользователя или группу, они также представляли таблицу и содержали все CRUD для этой таблицы и множество других действий. Но подождите, это еще не все! Они также должны были содержать общедоступную коллекцию имен / значений, чтобы вы могли получить свойства с помощью индексатора по имени столбца на случай, если вы добавили новый столбец, но не хотите добавлять новое свойство. Было множество других "обязательных", которые не только не имели смысла, но также значительно снизил производительность кода. Я мог бы попытаться выделить их все, но код говорит сам за себя, и, к сожалению, это почти точная копия класса User, который я только что вытащил из старой архивной папки:

public class Record
{
    private string tablename;
    private Database database;

    public NameValueCollection Fields;

    public Record(string TableName) : this(TableName, null) { }
    public Record(string TableName, Database db)
    {
        tablename = TableName;
        database = db;
    }

    public string TableName
    {
        get { return tablename; }
    }

    public ulong ID
    {
        get { return GetULong("ID"); }
        set { Fields["ID"] = value.ToString(); }

    }

    public virtual ulong GetULong(string field)
    {
        try { return ulong.Parse(this[field]); }
        catch(Exception) { return 0; }
    }

    public virtual bool Change()
    {
        InitializeDB(); // opens the connection
        // loop over the Fields object and build an update query
        DisposeDB(); // closes the connection
        // return the status
    }

    public virtual bool Create()
    {
        // works almost just like the Change method
    }

    public virtual bool Read()
    {
        InitializeDB(); // opens the connection
        // use the value of the ID property to build a select query
        // populate the Fields collection with the columns/values if the read was successful
        DisposeDB(); // closes the connection
        // return the status    
    }
}

public class User
{
    public User() : base("User") { }
    public User(Database db) : base("User", db) { }

    public string Username
    {
        get { return Fields["Username"]; }
        set
        {
            Fields["Username"] = value.ToString(); // yes, there really is a redundant ToString call
        }
    }
}

извините, если эта двойная публикация, в первый раз я мог бы не был человеком, или, возможно, на сайте просто есть ограничение на то, насколько плохой код может быть опубликован

1
ответ дан 23 November 2019 в 20:33
поделиться

Акронимы с заглавной буквы

DO используют заглавные буквы для обоих символов двухсимвольных сокращений, кроме первого слова идентификатора в верблюжьем регистре.

System.IO
public void StartIO(Stream ioStream)

DO используют заглавные буквы только для первого символа. сокращений, состоящих из трех или более символов, кроме первого слова идентификатора в верблюжьем регистре.

System.Xml
public void ProcessHtmlTag(string htmlTag)

НЕ использовать заглавные буквы в любых акронимах, независимо от их длины, в начале идентификатора в верблюжьем регистре.

System.Xml
public void ProcessHtmlTag(string htmlTag)

1140162]

1
ответ дан 23 November 2019 в 20:33
поделиться

необходимость поставить префикс m_ на переменные экземпляра java и префикс g_ на статические переменные java, самая не-Java идиотская ерунда, с которой мне когда-либо приходилось иметь дело, увековеченная C и разработчики C ++, которые не знали, как использовать что-либо, кроме блокнота, для разработки Java!

за исключением того, что на самом деле никто не следил за этим, кроме как ставить m_ на все, даже статику, даже имена методов ...

2
ответ дан 23 November 2019 в 20:33
поделиться

Запрещено использовать указатели или GOTO! (Тем не менее, на C!) К счастью, это был просто класс «программной инженерии», который я смог закончить и затем войти в «реальный мир».

3
ответ дан 23 November 2019 в 20:33
поделиться

Самым странным было то, что "это должно быть написано на C ++". По-видимому, меня наняли из-за моих знаний. Если мое экспертное мнение говорит, что другой язык будет работать лучше, то следует использовать этот другой язык. Сказать мне, какой инструмент мне следует использовать, - это примерно то же самое, что сказать автомеханику, что ему разрешено использовать только метрические гаечные ключи. И только гаечные ключи.

1
ответ дан 23 November 2019 в 20:33
поделиться

Наши старые стандарты кодирования C # требовали, чтобы мы использовали огромные уродливые блоки комментариев. Вы знаете в Code Complete, где Стив МакКоннелл дает яркий пример уродливого макроса комментария? Что. Почти точное совпадение.

Хуже всего было то, что C # - это язык, который уже имеет хорошую (и относительно ненавязчивую) поддержку комментариев.

Вы получите что-то вроде этого:

/// <summary>
/// Add an item to the collection
/// </summary>
/// <parameter name="item">The item to add</parameter>
/// <returns>Whether the addition succeeded</returns>
public bool Add(int item) { ... }

и это превратится в следующее:

// ########################################################## //
/// <summary>
///     Add an item to the collection
/// </summary>
///     IN:  <parameter name="item">The item to add</parameter>
///     OUT: <returns>Whether the addition succeeded</returns>
// ########################################################## //

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

Я могу только предположить, что авторам действительно очень понравилось это из предыдущих попыток с C / C ++. Проблема заключалась в том, что даже если бы у вас было всего несколько автоматических свойств, они занимали бы около 50% места на экране и добавляли значительный шум. Дополнительные строки // также испортили поддержку рефакторинга R #.

После того, как мы отказались от макроса комментариев, мы закончили тем, что отшлепали всю кодовую базу сценарием, который вернул нас к стилю комментариев C # по умолчанию для Visual Studio.

2
ответ дан 23 November 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: