...

вторник, 10 июня 2014 г.

[Из песочницы] Учимся разбираться в искусстве программирования

Классика




Самый обычный код.



$size = sizeof($arr)-1;
for ($i = $size; $i>=0; $i--) {
for ($j = 0; $j<=($i-1); $j++)
if ($arr[$j]>$arr[$j+1]) {
$k = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $k;
}
}


Барокко




Барокко (итал. barocco — «причудливый», «странный», «склонный к излишествам»)

Барокко свойственны контрастность, напряженность, стремление к величию и пышности как в именовании, так и в комментариях, к слиянию разных стилей кодирования. Обычно уже на продакшене обнаруживаются скрытые «детонаторы».

Чаще всего используется в: JavaScript, C++, Java.



$SIZE = SIZEof($A_R__R)-1;
for ($i = $SIZE; $i>=0; $i--) {
for ($j = 0; $j<=($i-1); $j++)
if ($A_R__R[$j]>$A_R__R[$j+1]) {
//используем хитрый манёвр
$A_R__R[$j+1] = $A_R__R[$j]; + $A_R__R[$j+1];
$A_R__R[$j] = $A_R__R[$j+1] - $A_R__R[$j];
$A_R__R[$j+1] = $A_R__R[$j+1] - $A_R__R[$j];

}
}






Готика




Черты готики:

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

Чаще всего используется в: JavaScript, PHP, Python, Perl.



$size = sizeof($arr)- 1 ;
for ($INDEX_I = $size; $INDEX_I>=0 ; $INDEX_I--){
for ($INDEX_J = 0; $INDEX_J<=($INDEX_I-1) ; $INDEX_J++)
if( $arr[$INDEX_J] > $arr[$INDEX_J+1]){
$k = $arr[$INDEX_J] ;
$arr[$INDEX_J] = $arr[$INDEX_J+1] ;
$arr[$INDEX_J+1] = $k ;
}
}


Минимализм




Общие черты:

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

Чаще всего используется в: Perl, Ruby, Python, Haskell, Scala, Erlang, F#.



for($i=sizeof($M)-1;$i>=0;$i--){

for($j=0;$j<=($i-1);$j++) if($M[$j]>$M[$j+1])
{
list($M[$j],$M[$j+1])=[$M[$j+1],$M[$j]];
}

}


Экспрессионизм




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

Чаще всего используется в: C#, Ruby, Common Lisp, PHP, Shen/Qi II.



<?php
$error = null;
$query = 'SELECT * FROM prices';
$result = mysql_query($query)
or $error = 'Запрос не удался: ' . mysql_error();
$arr = [];
while ($line = mysql_fetch_row($result)) {
$arr[] = $line['price'];
}

$size = sizeof($arr)-1;
for ($i = $size; $i>=0; $i--) {
for ($j = 0; $j<=($i-1); $j++)
if ($arr[$j]>$arr[$j+1]) { $k = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $k; }
}
echo "<ul>";
foreach ($arr => $v)
echo "<li>".$v."</li>";
echo "</ul>";
?>
<script>
var error = "<?php echo $error?>";
if (error) alert("ERROR: " + error);
</script>



Абстракционизм




Черты абстракционизма:

Практически весь код программы — исключительно декорация вокруг Божественного Объекта. Код, конфигурируемый настолько гибко (и запутано), что хочется, чтобы лучше уж это был hard code.

Чаще всего используется в: Java, PHP.



sort.php



<?php

require_once 'Sorter/Bubble/NumericArray.php';
require_once 'Storage/Array.php';

$bubbleSorter = new Sorter_Bubble_NumericArray();

$storage = new Storage_Array;
$storage->setElements(array(15, 204, 1, 4, 2, 6, 8, 3, 150));

$bubbleSorter->sort($storage);
var_dump($storage->getElements());




Abstract.php


<?php

require_once 'Sorter/Interface.php';

abstract class Sorter_Bubble_Abstract implements Sorter_Interface {

/**
*
* @var Comparator_Interface
*/
protected $_comparator;

/**
*
* @var Swapper_Interface
*/
protected $_swapper;

/**
*
* @var Storage_Interface
*/
protected $_storage;


/**
*
*/
public function _bubble() {
for ($i = $this->_storage->getSize() - 1; $i >= 0; $i--) {
for ($j = 0; $j <= ($i - 1); $j++) {
if ($this->_comparator->isBigger($this->_storage->getElementByIndex($j + 1), $this->_storage->getElementByIndex($j))) {
$this->_swapper->swap($this->_storage, $j + 1, $j);
}
}
}
}

}







NumericArray.php


<?php

require_once 'Sorter/Bubble/Abstract.php';
require_once 'Storage/Interface.php';
require_once 'Comparator/Numeric.php';
require_once 'Swapper.php';

class Sorter_Bubble_NumericArray extends Sorter_Bubble_Abstract {

public function sort(\Storage_Interface &$storage) {
$this->_storage = $storage;
$this->_comparator = new Comparator_Numeric();
$this->_swapper = new Swapper();

$this->_bubble();
}

}







Ссылка на весь код.

Кубизм




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

Чаще всего используется в: Perl, Shen/Qi II, Python.



$size= sizeof($arr)- 1;
for($i =$size;$i>=0; $i--) {
for($j =0;$j<=($i-1); $j++)

if($arr[$j] > $arr[$j+1])
{
$k= $arr[$j];
$arr[$j]= $arr[$j+1];
$arr[$j+1]= $k;
}
}


Поп-арт




Поп-арт от английского popular art, сокращенно pop art — популярный, общедоступный код.

Черты поп-арта:

Простой и яркий код, вызывающие и провокационные комментарии, поп-арт в коде привлекает неординарных личностей. Чрезмерности в поп-арте практически не бывает — здесь смешиваются различные подходы и стили кодирования. Обычно вырастает из исторического вклада.


Чаще всего используется в: С++, Java, PHP, C#, 1C.



$CocaCola = sizeof($Elvis)-1; // определяем максимальный индекс массива <<---- ОТЛИЧНЫЙ ПРИЁМ

for ($i = $CocaCola; $i>=0; $i--) {
for ($j = 0; $j<=($i-1); $j++)
if ($Elvis[$j]>$Elvis[$j+1]) {
// Меняем местами переменные методом еще дополнительной переменной, потому что ТАК КРУЧЕ
$Presley = $Elvis[$j];
$Elvis[$j] = $Elvis[$j+1]; $Elvis[$j+1] = $Presley;
}
}



А какой стиль и в каком языке программирования вам чаще всего встречается?


Используемые ресурсы



This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий