1. C# / Говнокод #17209

    +100

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    class Book
        {
            public void BookName(ref string file, ref int Index)
            {
                string[] ReadFile = File.ReadAllLines("NameFile.txt", Encoding.Default);
                file = ReadFile[Index];
            }
    
            public void BookAuthor(ref string file, ref int Index)
            {
                string[] ReadFile = File.ReadAllLines("AuthorFile.txt", Encoding.Default);
                file = ReadFile[Index];
            }
    
            public void BookDescription(ref string file, ref int Index)
            {
                string[] ReadFile = File.ReadAllLines("DescriptionFile.txt", Encoding.Default);
                file = ReadFile[Index];
            }
    
            public void BookTags(ref string file, ref int Index)
            {
                string[] ReadFile = File.ReadAllLines("TagFile.txt", Encoding.Default);
                file = ReadFile[Index];
            }
        }

    Запостил: LightningAtom, 28 Ноября 2014

    Комментарии (17) RSS

    • Говно какое-то
      Ответить
    • Допустим, с файлом всё понятно. Но индекс-то зачем рефить? Жаль, автор не оставил никаких комментов к своему детищу.
      Ответить
      • На всякий случай. Вдруг ему захочется поменять значение...
        Ответить
      • Рефы задумывались для вызова сишколиб, за другое использование нужно убивать. Кстати, какой-нибудь решарпер на это не матерится?
        Ответить
        • не а
          Ответить
          • Почему так? В додиезе овердохуища фич с применением в одном конкретном случае, в остальный за их использование нужно убивать нахуй сразу.
            Ответить
            • Потому что он наследник C++ в этом смысле.

              Вот в Java фич сделали поминимуму, за что теперь их все ругают.
              Ответить
              • ++Си имеет много легаси говна, включая, например, > > в шаблонах, т.к. >> - оператор сдвига. В сишарп такую хуйню изначально не включали. Но речь не об этом шла, а о варнингах на неоправданное использование фич, не вижу тут связи. Кстати, не в курсе, как там в ++c с качеством статического анализа.
                Ответить
                • >>статического
                  PVS-Studio
                  Ответить
                  • >как там с качеством
                    Ответить
                    • я думаю, что очень хорошо
                      http://www.viva64.com/en/n/0090/
                      https://twitter.com/ID_AA_Carmack/status/258940507869310976
                      Ответить
                      • Я не совсем про это. В жавке, например, можно переменовать метод в программе любого размера и все корректно переименуется (ну, кроме отражений), можно найти все места, откуда вызывается определенный метод (опять же, не трогая динамическое программирование).

                        А насчет си - я видел пост от автора того же анализатора, который отказался проверять какую-то либу, потому что там "макросы разворачиваются в макросы".
                        Ответить
    • Нехватает внутреннего кеша данных из файлов, записанных в Hashtable по ключу - имени файла, и проверке промахивания мимо кеша перед считываением. Лучше всего реализовать собственную версию Hashtable, с загрузкой из файла блоками по 4K байт, хранящихся в WeakReference ссылках, чтобы в случае, если файлы большие - кешировать не весь файл, а только его часть. Идеальным вариантом была бы предусмотренная возможность создания кеша второго уровня с обычными сссылками внутри этого Hashtable, чтобы помнить последние 4 блока памяти, в которые попадал индекс при вызове методов. Ну как мой вариане говнокода? Перфектный говнокодище? :)
      Ответить
      • СУБД на вас нет :)
        Ответить
        • А это вариааааааааааааааант. Точно, в следующей итерации создадим публичные и внутренние интерфейсы для прокси, полностью вынесем весь код из этих двух Hashtable в фабрики, и сделаем конструктор фабрики, который завернем в internal proxy который будет переключаться в БД или использовать внутренние in-memory реализации в зависимости от доступности БД или флага отладчика DEBUG (исключающее или)
          Ответить
    • Это исходники MS Sql Server?
      Ответить

    Добавить комментарий