forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   Какая запись кодового блока вам милее? (http://forum.boolean.name/showthread.php?t=16697)

ffinder 25.04.2012 19:21

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

Сообщение от SBJoker (Сообщение 226432)
Basic like style.

питон жеж, ты чо!
основное отличие - блоки кода определяются не скобками, не парами begin/end, а отступами.

impersonalis 25.04.2012 19:26

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

Сообщение от ffinder (Сообщение 226456)
питон жеж, ты чо!
основное отличие - блоки кода определяются не скобками, не парами begin/end, а отступами.

на нём ещё Маяковский писал!

Randomize 25.04.2012 20:31

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

Сообщение от ffinder (Сообщение 226417)
открой для себя python\boo (последний есть в юнити, кстати)
Код:

def ololo(a as int):
    if a > 2:
        return "nope"
    else:
        return "yap"


Вот благодаря таким вот любителям я открываю порой php сорс и вижу:
PHP код:

if ($ololo):
     
someAction();
else:
    for(
$i=0;$i<100500;$i++):
          
blahBlahBlah($i);
    endfor;
endif; 

Что вызывает термоядерную ярость.

Цитата:

Сообщение от ABTOMAT (Сообщение 226440)
юзаю исключительно второй вариант, имхо читабельнее, скобки сразу в глаза бросаются.

"Как мне IDE сказал - так и делаю"

NetBeans ты специально на
PHP код:

{
  
/* ... */


перенастраивал


По теме:
Использую по возможности только:
PHP код:

if(ololoSha){
  
/*.... */



ABTOMAT 25.04.2012 21:06

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

NetBeans ты специально на
Это была ирония, т.к. нехрен грить что зависит от ИДЕ: это всегда перенастраивается (иначе ИДЕ место на помойке)
Цитата:

Использую по возможности только:
PHP код:

if(ololoSha){
  
/*.... */



А мне наоборот не нравится.
Например в качестве дебага я захотел условие заставить работать в любом случае. Если бы
PHP код:

if(ololoSha)
{
  
/*.... */


То я бы просто закомментил первую строчку и всё. В твоём случае так просто не выйдет. Можно юзнуть трюк && 0 или || 1 но тогда это не так бросается в глаза, как серая строчка коммента, потом найти сложнее и т.д.

FireOwl 25.04.2012 21:39

Ответ: Какая запись кодового блока вам милее?
 
Пишу первый вариант. Не помню уже почему, просто привычка такая.
Если IDE потом поправляет - не заморачиваюсь.

А вот пробелы бывают не к месту. Они разрыхляют код и делают его труднее для восприятия, имхо.
Например:
PHP код:

if (*something*) {
    
/* code */


я исправил бы на
PHP код:

if(*something*){
    
/* code */



AVL 25.04.2012 22:17

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

Сообщение от Randomize (Сообщение 226466)
Вот благодаря таким вот любителям я открываю порой php сорс и вижу:
PHP код:

if ($ololo):
     
someAction();
else:
    for(
$i=0;$i<100500;$i++):
          
blahBlahBlah($i);
    endfor;
endif; 

Что вызывает термоядерную ярость.

эмм... А как правильно?

ABTOMAT 25.04.2012 23:26

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

Сообщение от AVL (Сообщение 226476)
эмм... А как правильно?

Правильно использовать православную блочную структуру кода (какой опступ использовать - в данный момент обсуждается) доставшуюся ещё от дедушки Си:

PHP код:

if($ololo)
{
    
someAction();
}
else
{
    for(
$i=0;$i<100500;$i++)
    {
          
blahBlahBlah($i);
    }


Т.е. блоки заключены в фигурные скобки, как и во всех си-подобных языках. Но т.к. php освоить может даже макака, в него были добавлены также бейсикопаскалеподобные блоки для тех, кому сишные непонятны. Я вот щитаю что они — пережиток прошлого, нужны только для обучения подрастающего поколения (когда новичку сложно разобраться во всех этих фигурных скобках, а бейзиковское IF - END IF для него понятнее), но никак не в профессиональных исходниках. Собственно и сами паскаль и бейзик уже давно считаются академическими. Тут дело в том что с точки зрения бейсика например блок может существовать только в совокупности с оператором (например IF - END IF, FOR - NEXT и т.д.), а с точки зрения же Си блок может вообще существовать где угодно, вот почему в
PHP код:

if(ololo)
{
doSomething();


Можно закомментить первую строку и всё будет работать. С бейзикоподобными так уже не выйдет. Ну и если нужно заменить оператор - придётся заменять ещё и закрывающую "скобку". А ещё можно в одну строку записывать и т.д. и т.п. В паскале же (ЕМНИП) блок может существовать отдельно, но там "скобки" довольно громоздки: вместо { и } там begin и end. И в одну строку нельзя.

impersonalis 25.04.2012 23:50

Ответ: Какая запись кодового блока вам милее?
 
Специально не отвечал - ждал полнолуния ВремениКода чтобы внезапно глянуть: как же именно я пишу, а не подсознательно тяготеть к одному из ответов. Итак - кодил на цпп в к::б
Код:

int ololo (int a) {
    return a;
}

Но дело тут не в авторах учебников, и я даже не буду настаивать что мой вариант лучше - скорее это дело привычки.
Цитата:

Сообщение от В. В. Маяковский
Мы диалектику учили не по Гегелю

А вот ещё вам вопросы: а как вы оформляете switch (где ставите скобки, делаете ли для тела case отдельный уровень отступов)? А public\private отстоят отдельно или на том же отступе что и члены объекта?

radiobutton 26.04.2012 00:18

Ответ: Какая запись кодового блока вам милее?
 
либо так:
Код:

 
switch (t_v)
{
    case 1:{return Convert.ToInt32(list_scv[j].val2).ToString();}break;
    case 2:{return list_scv[j].val2.ToString();}break;
    case 3:{return list_scv[j].val2.ToString();}break;
    default:{MessageBox.Show("WTF???");}break;
}

либо так:

Код:

switch (t_v)
{
    case 1:
    case 2:
        {
            int a=string_part(s,1,"-1234567890",0);
            if (a!=s.Length)
            {
                if (s.Substring(a,1)==",")
                {
                    if (a+1<=s.Length)
                    {
                        if (string_part(s,a+1,"1234567890",0)==s.Length)
                        {
                            if (t_v==1)
                            {return Convert.ToInt32(Convert.ToDouble(s)).ToString();}
                            else
                            {return s;}
                        }
                        else
                        {
                            MessageBox.Show("Incorrect value of object.");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Incorrect value of object.");
                    }
                }
                else
                {
                    MessageBox.Show("Incorrect value of object.");
                }
            }
            else
            {
                return s;
            }
        }break;
    case 3:
        {
            if (s.Substring(0,1)=="'" && s.Substring(s.Length-1)=="'")
            {
                return s;
            }
            else
            {
                MessageBox.Show("Incorrect value of object.");
            }
        }break;
    default:
        {MessageBox.Show("WTF??");}break;
}

Но терь я прочитал 200 страниц шмидта и знаю, что брейк нужно использовать внутри кодового блока. А также, что недостижимый код (break; после return) это ошибка програмирования. Хотя я их оставлял (их это break; ) на случай если решу удалить return и вдруг забуду добавить break;. Ведь посути недостижимый код компилятор наверное не компилирует?

pax 26.04.2012 00:26

Ответ: Какая запись кодового блока вам милее?
 
Вложений: 1
На C# + ReSharper можно видеть сразу недостижимый код не компилируя:

Вложение 16703

radiobutton 26.04.2012 00:31

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

Сообщение от pax (Сообщение 226493)
На C# + ReSharper можно видеть сразу недостижимый код не компилируя:

Вложение 16703

VS подчеркивает зеленым недостижимый код, до компилирования. :)

AVL 26.04.2012 00:44

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

Сообщение от ABTOMAT (Сообщение 226485)
PHP код:

if($ololo)
{
    
someAction();
}
else
{
    for(
$i=0;$i<100500;$i++)
    {
          
blahBlahBlah($i);
    }



Заменяем скобки на begin/end и получаем паскаль:

PHP код:

if(ololo)
begin
    someAction
();
end
else
begin
    
for i=0 to 100500 do
    
begin
          blahBlahBlah
(i);
    
end
end 

не?

ABTOMAT 26.04.2012 01:12

Ответ: Какая запись кодового блока вам милее?
 
Я про паскаль написал в том же посте снизу.
Сделай-ка мне вот так в паскале:
PHP код:

if($a){ pokushai(); popei(); pospi(); } 


FireOwl 26.04.2012 01:19

Ответ: Какая запись кодового блока вам милее?
 
А в чем подвох?
PHP код:

if a then begin pokushai(); popei(); pospi(); end

Разница только в том, что слова длиннее символов. Ну и смотрятся немного по другому.

Mr_F_ 26.04.2012 02:15

Ответ: Какая запись кодового блока вам милее?
 
Цитата:

а как вы оформляете switch
лол, кстати в жизни его не юзал, начиная с бейсика и кончая С++.
в С++ особенно. какие-то брейки, default.
синтаксис if проще)

if (a==1)
{
}
else if (a==2)
{
}
else if (a==3)
{
}
опционально else
{
}


Часовой пояс GMT +4, время: 04:09.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot