<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/csdev/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя csdev]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 30 Apr 2026 05:43:41 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Спаривание разработчиков в интересах бизнеса, или узкий взгляд на парное программирование с ограниченной точки зрения]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/943254/</guid>
      <link>https://habr.com/ru/articles/943254/?utm_campaign=943254&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/918/b37/c36/918b37c361d5c17db05b857ff1d6ef30.png" /><p>Сейчас на небе только и разговоров, что о вайб-кодинге. А я, к своему стыду, даже парный никогда не пробовал. На разных местах подходил к руководству с предложениями потестировать методику, но ответом были неизменные шуточки за триста. Мол, конечно-конечно. Вам, сэр, на время Ваших чудачеств рабочее время удвоить или зарплату уполовинить? Но счастлив тот, кто может укрыться от подобного мрака в уютной и светлой внутренней мастерской своего инженерного гения.</p> <a href="https://habr.com/ru/articles/943254/?utm_campaign=943254&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 23 Sep 2025 09:06:12 GMT</pubDate>
      <dc:creator><![CDATA[CSDev]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Математика]]></category><category><![CDATA[Управление разработкой]]></category>
      <category><![CDATA[парное программирование]]></category><category><![CDATA[математическое моделирование]]></category><category><![CDATA[управление разработкой]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Мечтают ли разработчики о декларативных тестах — 2. Особое мнение]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/684056/</guid>
      <link>https://habr.com/ru/articles/684056/?utm_campaign=684056&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6e4/d06/80b/6e4d0680b53899ceb03513191fce280e.png" /><p>По непроверенным данным, половина несчастных случаев происходит после слов "<em>смотри, как я умею</em>", другая же половина — после "<em>ерунда, смотри, как надо</em>".</p><p>Тут один приятель, увидев <a href="https://habr.com/ru/post/681886/" rel="noopener noreferrer nofollow">фокус с тестами без тестов</a>&nbsp;с использованием обобщенных аттрибутов из preview версии C# и особенностей экосистемы NUnit, отметил, что все сделано транс-ректально, а сам бы он применил Fody, и вышло бы гораздо лучше. Демонстрировать, к сожалению, ничего не стал. А мне вспомнился&nbsp;<a href="https://habr.com/ru/post/513062/#comment_21932102" rel="noopener noreferrer nofollow">комментарий</a>&nbsp;к описанию другого преодоления концептуального ограничения языка. Тогда руки не дошли попробовать, а сейчас вот решил глянуть, что это за птица, и проверить, поможет ли она написать более элегантное решение.</p><p></p> <a href="https://habr.com/ru/articles/684056/?utm_campaign=684056&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 24 Aug 2022 22:50:42 GMT</pubDate>
      <dc:creator><![CDATA[CSDev]]></dc:creator>
      <category><![CDATA[Ненормальное программирование]]></category><category><![CDATA[.NET]]></category><category><![CDATA[C#]]></category>
      <category><![CDATA[.net]]></category><category><![CDATA[c#]]></category><category><![CDATA[unit-testing]]></category><category><![CDATA[nunit]]></category><category><![CDATA[fody]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Мечтают ли разработчики о декларативных тестах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/681886/</guid>
      <link>https://habr.com/ru/articles/681886/?utm_campaign=681886&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/webt/3j/eb/ch/3jebchajpsf7zjaylulv_ydnod4.png" alt="image"><br>
Завершение работы над <a href="https://habr.com/ru/post/662109/">прошлой публикацией</a> (читать которую для понимания этой совсем не обязательно) принесло мне не мир, но <s>меч</s> мечту о мире. Мире, в котором можно писать более выразительные строго типизированные тесты и вместо<br>
<br>
<pre><code class="cs">[TestCase(typeof(Impl), &quot;command&quot;)]
public void Test(Type impl, string cmd) =&gt;
    ((I)Activator.CreateInstance(impl)).Do(cmd);
</code></pre><br>
использовать<br>
<br>
<pre><code class="cs">[TestCase&lt;Impl&gt;(&quot;command&quot;)]
public void Test&lt;TImpl&gt;(string cmd) where TImpl : I, new() =&gt;
    new TImpl().Do(cmd);
</code></pre><br>
И он оказался ближе, чем я мог подумать. А дальше пошло-поехало…<br> <a href="https://habr.com/ru/articles/681886/?utm_campaign=681886&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 15 Aug 2022 21:07:29 GMT</pubDate>
      <dc:creator><![CDATA[CSDev]]></dc:creator>
      <category><![CDATA[.NET]]></category><category><![CDATA[C#]]></category><category><![CDATA[Ненормальное программирование]]></category>
      <category><![CDATA[.net]]></category><category><![CDATA[c#]]></category><category><![CDATA[unit testing]]></category><category><![CDATA[ненормальное программирование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[История одного НЕ-ОТВЕТА на stackoverflow]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/662109/</guid>
      <link>https://habr.com/ru/articles/662109/?utm_campaign=662109&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/15c/d3f/073/15cd3f07324ab8a3aa05a7ea3f2f7733.png" /><p>Недавно наткнулся на stackoverflow на такой вопрос <a href="https://stackoverflow.com/questions/71611998/need-to-check-if-code-contains-certain-identifiers" rel="noopener noreferrer nofollow">Need to check if code contains certain identifiers</a> и в ходе размышлений преобразился из «маленького помощника Санты» в «адвоката дьявола». Что, конечно, гораздо веселее. Но мораль не в этом.</p> <a href="https://habr.com/ru/articles/662109/?utm_campaign=662109&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 21 Apr 2022 21:13:14 GMT</pubDate>
      <dc:creator><![CDATA[CSDev]]></dc:creator>
      <category><![CDATA[.NET]]></category><category><![CDATA[C#]]></category>
      <category><![CDATA[.net]]></category><category><![CDATA[c#]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Не заблудиться в трёх if'ах. Рефакторинг ветвящихся условий]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/516286/</guid>
      <link>https://habr.com/ru/articles/516286/?utm_campaign=516286&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[На просторах интернета можно найти множество описаний приемов упрощения условных выражений (например, <a href="https://refactoring.guru/refactoring/techniques/simplifying-conditional-expressions" rel="nofollow">тут</a>). В своей практике я иногда использую комбинацию <i>замены вложенных условных операторов граничным оператором</i> и <i>объединения условных операторов</i>. Обычно она дает красивый результат, когда количество независимых условий и выполняемых выражений заметно меньше количества веток, в которых они комбинируются различными способами. Код будет на C#, но действия одинаковы для любого языка, поддерживающего конструкции if/else.<br>
<br>
<a href="https://habr.com/ru/post/516286/"><img src="https://habrastorage.org/webt/ct/22/l9/ct22l9tcejckodkrg0eaxyd5uv4.png" alt="image"></a><br> <a href="https://habr.com/ru/articles/516286/?utm_campaign=516286&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 01 Oct 2020 16:05:48 GMT</pubDate>
      <dc:creator><![CDATA[CSDev]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Проектирование и рефакторинг]]></category>
      <category><![CDATA[программирование]]></category><category><![CDATA[рефакторинг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вызываем конструктор базового типа в произвольном месте]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/513062/</guid>
      <link>https://habr.com/ru/articles/513062/?utm_campaign=513062&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Недавно проходил собеседование, и среди прочих был вопрос о порядке вызова конструкторов в C#. После ответа собеседующий решил продемонстрировать эрудицию и заявил, что вот в Java конструктор базового типа можно вызвать в любом месте конструктора производного типа, и C#, конечно, в этом проигрывает.<br>
<br>
<div class="spoiler" role="button" tabindex="0">
                        <b class="spoiler_title">Утверждение оказалось ложью, враньем и провокацией</b>
                        <div class="spoiler_text"><img src="https://habrastorage.org/webt/uw/qv/hc/uwqvhcmhh7vh8zhmbyclmloynxy.png" alt="image"><br>
</div>
                    </div><br>
Но это уже не имело значения, потому что вызов был принят.<br>
<br>
<a href="https://habr.com/ru/post/513062/"><img src="https://habrastorage.org/webt/h-/_i/0j/h-_i0j_k01euzuqqky3lccmxwhw.png" alt="image"></a><br> <a href="https://habr.com/ru/articles/513062/?utm_campaign=513062&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 07 Aug 2020 06:50:31 GMT</pubDate>
      <dc:creator><![CDATA[CSDev]]></dc:creator>
      <category><![CDATA[.NET]]></category><category><![CDATA[C#]]></category><category><![CDATA[Ненормальное программирование]]></category>
      <category><![CDATA[ненормальное программирование]]></category><category><![CDATA[.net]]></category><category><![CDATA[c#]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как ‌С#-разработчик у JavaScript плохому учился]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/508526/</guid>
      <link>https://habr.com/ru/articles/508526/?utm_campaign=508526&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="https://habr.com/ru/post/508526/"><img src="https://habrastorage.org/webt/xn/mt/xa/xnmtxadsyatkiie7hxpuui8lar8.png"></a><br>
<br>
Недавно мне на глаза попалась одна <a href="https://habr.com/ru/post/414593/">статья</a> на Хабре. В ней сравниваются C# и JavaScript. На мой взгляд, сравнивать их — всё равно что сравнивать луну и солнце, которые, если верить классику, не враждуют на небе. Эта статья напомнила мне о <a href="https://habr.com/ru/company/ruvds/blog/499670/">другой публикации</a>. В ней речь идёт о сценариях неожиданного и неочевидного поведения JavaScript, а C# не упоминается от слова совсем, но живое любопытство сподвигло меня попытаться повторить подобное поведение на другом языке.<br> <a href="https://habr.com/ru/articles/508526/?utm_campaign=508526&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 27 Jun 2020 12:48:07 GMT</pubDate>
      <dc:creator><![CDATA[CSDev]]></dc:creator>
      <category><![CDATA[.NET]]></category><category><![CDATA[C#]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Ненормальное программирование]]></category>
      <category><![CDATA[.net core]]></category><category><![CDATA[c#]]></category><category><![CDATA[javascript]]></category><category><![CDATA[ненормальное программирование]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
