• Правила объявления интерфейсов. "I" или "!I"?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Никакой "официальной" жесткой конвенции на этот счет нет. Как уже указал RGV, какую конвенцию использовать - личное дело команды / фирмы / техдира.
    Я сам в свое время пришел к Java из Pascal и .NET, и тоже придерживаюсь нотации с I, т.к. это позволяет в коде визуально отличить интерфейс от класса. Просто для примера:
    ...
      IProducer simpleProducer = new Producer();
      IProducer sofisticatedProducer = new SpecialProducer();
    ...
      public void produceSomething(IProducer producer);

    При взгляде на такой код сразу понятно, кто из ху, без всяких дополнительных кликов, наведения курсора и прочих пританцовываний с IDE.
    И хотя это никак явно не помешает креативному балбесу влепить класс там, где нужно использовать интерфейс, это поможет проводящему ревью заметить грабли невооруженным глазом :) С моей точки зрения цена такого удобства в 1 (один !) доп. символ в имени вполне оправдана.
    Ответ написан
    Комментировать
  • Ссылочные типы [C#, .NET 4.5]

    Vadimyan
    @Vadimyan
    Программист C#
    Привет, по поводу строк в .net очень хорошо писали/переводили ребята на хабре:
    habrahabr.ru/post/165597
    habrahabr.ru/post/172627
    Если вкратце - string это ссылочный тип с множеством переопределенных операций. Самой главной особенностью является создание новой строки при каждой операции (как у значимых типов), что нужно помнить при разработке. Во второй статье еще описан очень занятный механизм .net - интернирование строк. Неизменяемость строк ставит вопрос об их эффективной конкатинации, на который отвечает тот самый Джон Скит: www.yoda.arachsys.com/csharp/stringbuilder.html

    По стандартам кодирования, если речь идёт о стиле, есть советы самих MS: msdn.microsoft.com/en-us/library/ff926074.aspx
    Resharper в своей стандартной конфигурации во многом повторяет эти советы и для выработки хорошего стиля можно рекомендовать стараться делать "зеленый" код по решарперу. Исключение составляет то, что решарпер любит сворачивать выражения foreach в цепочки вызовов LINQ, что очень негативно скажется на поддерживаемости и отлаживаемости кода.

    Напоследок скажу, что по
    Ответ написан
    Комментировать
  • Ссылочные типы [C#, .NET 4.5]

    MikhailD
    @MikhailD
    Developer

    Почему string является ссылочным типом?

    Так решили разработчики языка.


    А то судя по его поведению он "тип значений"

    О каком поведении вы говорите? Строки в C# являются не изменяемыми, каждый метод, "изменяющий" строку на самом деле создает новую и возвращает ее. Возможно это вводит вас в заблуждение.


    Где найти стандарты кодинга C#.

    Если вы о стандарте (спецификации) языка, то тут:
    https://www.google.ru/#newwindow=1&q=C%23+standard...
    Ответ написан
    Комментировать