<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Относно конвенциите</title>
	<atom:link href="http://skanev.com/2007/11/13/regarding-conventions/feed/" rel="self" type="application/rss+xml" />
	<link>http://skanev.com/2007/11/13/regarding-conventions/</link>
	<description>Блогът на Стефан Кънев</description>
	<lastBuildDate>Thu, 04 Mar 2010 13:28:32 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Codito ergo sum &#187; Думи от занаята</title>
		<link>http://skanev.com/2007/11/13/regarding-conventions/comment-page-1/#comment-941</link>
		<dc:creator>Codito ergo sum &#187; Думи от занаята</dc:creator>
		<pubDate>Fri, 25 Jan 2008 09:40:22 +0000</pubDate>
		<guid isPermaLink="false">http://skanev.com/2007/11/13/regarding-conventions/#comment-941</guid>
		<description>&lt;p&gt;[...] са важни. Трябва да внимаваме с употребата им за да можем да се разбираме. Но често не стигат, когато говорим за някаква [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] са важни. Трябва да внимаваме с употребата им за да можем да се разбираме. Но често не стигат, когато говорим за някаква [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Свилен</title>
		<link>http://skanev.com/2007/11/13/regarding-conventions/comment-page-1/#comment-279</link>
		<dc:creator>Свилен</dc:creator>
		<pubDate>Wed, 14 Nov 2007 11:32:19 +0000</pubDate>
		<guid isPermaLink="false">http://skanev.com/2007/11/13/regarding-conventions/#comment-279</guid>
		<description>&lt;p&gt;Признавам - &lt;code&gt;ArrayList/LinkedList&lt;/code&gt; не добър пример - все пак това са различни фундаментални типове данни с характерните си свойства; прилагането им трябва да бъде съобразено.&lt;/p&gt;

&lt;p&gt;От друга страна, според мен влагането на нюанси в &lt;code&gt;for/while&lt;/code&gt; и описвайки ги в конвенция, е малко пресилено. Преполагам никой от нас не използва while за да извърти един масив - просто защото е свикнал да гледа, че това се прави с &lt;code&gt;for&lt;/code&gt; - в учебниците, в кода на колегите, в чужд софтуер. Съгласен съм, че &lt;code&gt;for each&lt;/code&gt; конструкциите са още по експресивни. Колкото повече &quot;стандартни конструкции&quot; един програмист използва, толкова по-лесен е кода за четене - но пак искам да уточня: ако програмиста смята, че дадена конструкция отговаря по-добре на намерението му - нека я ползва; не трябва конвенцията да го спира. Добър пример е дебата около goto - в език като &lt;em&gt;C&lt;/em&gt;, където програмните изключенията (exceptions) са недостъпен лукс. Например функцията с goto, което прехвърлят изпълнението в края при невалиден входни параметри е доста по-четима от няколко вложени &lt;code&gt;if&lt;/code&gt;-a. Ето тук конвенция &quot;goto e враг номер едно на &lt;a href=&quot;http://www.edno.bg/?page=all_comments&amp;id=855&quot; rel=&quot;nofollow&quot;&gt;Тутраканската селищна система&lt;/a&gt;&quot; би спънал четливия код.&lt;/p&gt;

&lt;p&gt;Мойте 5 ст&#039;инки.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Признавам &#8211; <code>ArrayList/LinkedList</code> не добър пример &#8211; все пак това са различни фундаментални типове данни с характерните си свойства; прилагането им трябва да бъде съобразено.</p>

<p>От друга страна, според мен влагането на нюанси в <code>for/while</code> и описвайки ги в конвенция, е малко пресилено. Преполагам никой от нас не използва while за да извърти един масив &#8211; просто защото е свикнал да гледа, че това се прави с <code>for</code> &#8211; в учебниците, в кода на колегите, в чужд софтуер. Съгласен съм, че <code>for each</code> конструкциите са още по експресивни. Колкото повече &#8222;стандартни конструкции&#8220; един програмист използва, толкова по-лесен е кода за четене &#8211; но пак искам да уточня: ако програмиста смята, че дадена конструкция отговаря по-добре на намерението му &#8211; нека я ползва; не трябва конвенцията да го спира. Добър пример е дебата около goto &#8211; в език като <em>C</em>, където програмните изключенията (exceptions) са недостъпен лукс. Например функцията с goto, което прехвърлят изпълнението в края при невалиден входни параметри е доста по-четима от няколко вложени <code>if</code>-a. Ето тук конвенция &#8222;goto e враг номер едно на <a href="http://www.edno.bg/?page=all_comments&amp;id=855" rel="nofollow">Тутраканската селищна система</a>&#8220; би спънал четливия код.</p>

<p>Мойте 5 ст&#8217;инки.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Стефан Кънев</title>
		<link>http://skanev.com/2007/11/13/regarding-conventions/comment-page-1/#comment-278</link>
		<dc:creator>Стефан Кънев</dc:creator>
		<pubDate>Wed, 14 Nov 2007 09:55:15 +0000</pubDate>
		<guid isPermaLink="false">http://skanev.com/2007/11/13/regarding-conventions/#comment-278</guid>
		<description>&lt;p&gt;@Свилен:
Сега, аз пък точно за това адвокатствам - че ArrayList/LinkedList, for/while са вариация на едно израно средство - позволяват ти да кажеш едно нещо по няколко начина. И е особено критично да се ползват консистентно в кода. А нещо което е консистентно като нищо може да подлежи на конвенция, била тя и полу-формален фолклор в екипа, а не драконов закон.&lt;/p&gt;

&lt;p&gt;Ще ти дам по-конкретен пример.&lt;/p&gt;

&lt;p&gt;&lt;pre lang=&quot;java&quot;&gt;
for (int i = 0; i &lt; numbers.length; i++) {
  System.out.println(numbers[i]);
}
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Проста програма. Чете се като &quot;за всяко число в numbers, изведи го на екрана&quot;. Виж какво става, ако го напишеш с &lt;code&gt;while&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;pre lang=&quot;java&quot;&gt;
int i = 0;
while (i &lt; numbers.length) {
    System.out.println(numbers[i]);
    i++;
}
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Действието е идентично. Дори ще генерира същия байт-код. Но се чете така &quot;докато i е по-малко от дължината на numbers, извеждай i-тото число в numbers и увеличи i след това&quot;. Което е много по-далеч от идеята на кода (intention).&lt;/p&gt;

&lt;p&gt;Когато човек използва for/while неподходящо, само дава грешни сигнали. Не изразява кода четливо и еднозначно, в твои думи. Когато избира между ArrayList и LinkedList ползвайки &lt;code&gt;rand()&lt;/code&gt;, вместо да прецени кое е по-подходящо създава объркване.&lt;/p&gt;

&lt;p&gt;Това важи още повече за някои неща които са по средата. Класическата конвенция в ruby е да се ползва &lt;code&gt;begin/end&lt;/code&gt; за блоково на повече от един ред и &lt;code&gt;{ }&lt;/code&gt; за блокове на един ред. Алтернативната идея е да се ползва &lt;code&gt;begin/end&lt;/code&gt; когато важното са странични ефекти, докато &lt;code&gt;{ ... }&lt;/code&gt; като се изчислява резултат. Която идея да изберете, трябва да сте консистентни в рамките на екипа - иначе твоя код ще ме обърква, докато моя код ще те дразни, защото ползвам &lt;code&gt;{ ... }&lt;/code&gt; за големи блокове.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>@Свилен:
Сега, аз пък точно за това адвокатствам &#8211; че ArrayList/LinkedList, for/while са вариация на едно израно средство &#8211; позволяват ти да кажеш едно нещо по няколко начина. И е особено критично да се ползват консистентно в кода. А нещо което е консистентно като нищо може да подлежи на конвенция, била тя и полу-формален фолклор в екипа, а не драконов закон.</p>

<p>Ще ти дам по-конкретен пример.</p>

<p>

</p>
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family: Monaco, Courier New, monospace;"><span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> numbers.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>numbers<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>




<p>Проста програма. Чете се като &#8222;за всяко число в numbers, изведи го на екрана&#8220;. Виж какво става, ако го напишеш с <code>while</code>:</p>

<p>

</p>
<div class="wp_syntax"><div class="code"><pre class="java" style="font-family: Monaco, Courier New, monospace;"><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> numbers.<span style="color: #006633;">length</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>numbers<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    i<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>




<p>Действието е идентично. Дори ще генерира същия байт-код. Но се чете така &#8222;докато i е по-малко от дължината на numbers, извеждай i-тото число в numbers и увеличи i след това&#8220;. Което е много по-далеч от идеята на кода (intention).</p>

<p>Когато човек използва for/while неподходящо, само дава грешни сигнали. Не изразява кода четливо и еднозначно, в твои думи. Когато избира между ArrayList и LinkedList ползвайки <code>rand()</code>, вместо да прецени кое е по-подходящо създава объркване.</p>

<p>Това важи още повече за някои неща които са по средата. Класическата конвенция в ruby е да се ползва <code>begin/end</code> за блоково на повече от един ред и <code>{ }</code> за блокове на един ред. Алтернативната идея е да се ползва <code>begin/end</code> когато важното са странични ефекти, докато <code>{ ... }</code> като се изчислява резултат. Която идея да изберете, трябва да сте консистентни в рамките на екипа &#8211; иначе твоя код ще ме обърква, докато моя код ще те дразни, защото ползвам <code>{ ... }</code> за големи блокове.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Anislav</title>
		<link>http://skanev.com/2007/11/13/regarding-conventions/comment-page-1/#comment-277</link>
		<dc:creator>Anislav</dc:creator>
		<pubDate>Wed, 14 Nov 2007 08:25:37 +0000</pubDate>
		<guid isPermaLink="false">http://skanev.com/2007/11/13/regarding-conventions/#comment-277</guid>
		<description>&lt;p&gt;Пак мислим еднакво с тебе ;)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Пак мислим еднакво с тебе <img src='http://skanev.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Свилен</title>
		<link>http://skanev.com/2007/11/13/regarding-conventions/comment-page-1/#comment-276</link>
		<dc:creator>Свилен</dc:creator>
		<pubDate>Wed, 14 Nov 2007 07:25:41 +0000</pubDate>
		<guid isPermaLink="false">http://skanev.com/2007/11/13/regarding-conventions/#comment-276</guid>
		<description>&lt;p&gt;Според мен използването на определени езикове конструкции (for vs. while, ArrayList vs. LinkedList), е твърде ниско ниво за да подлежи на конвенция - програмиста трябва да използва целия арсенал на езика си за да се изрази &lt;em&gt;четливо и еднозначно&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;От досегашната ми работа мога да направя &lt;a href=&quot;http://svilen-online.blogspot.com/2007/11/blog-post_14.html&quot; rel=&quot;nofollow&quot;&gt;няколко извода за конвенциите&lt;/a&gt;.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Според мен използването на определени езикове конструкции (for vs. while, ArrayList vs. LinkedList), е твърде ниско ниво за да подлежи на конвенция &#8211; програмиста трябва да използва целия арсенал на езика си за да се изрази <em>четливо и еднозначно</em>.</p>

<p>От досегашната ми работа мога да направя <a href="http://svilen-online.blogspot.com/2007/11/blog-post_14.html" rel="nofollow">няколко извода за конвенциите</a>.</p>]]></content:encoded>
	</item>
</channel>
</rss>
