Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Украшение кода   Найти похожие ветки 

 
AlexanderMS ©   (2006-05-07 20:48) [0]

Вот сижу и пишу программу, создаю новую процедуру. Так аккуратненько, с отступами, со сдвигами.
Добавил условный блок (к примеру):

if a = 0
 then
   begin
     b := 1;
     c := 2
   end
 else
   begin
     b := 2;
     c := 3
   end;

Потом вознимла необходимость добавить цикл

for n := 1 to count do
if a = 0
 then
   begin
     b := 1;
     c := 2
   end
 else
   begin
     b := 2;
     c := 3
   end;

Отступы снова проставлять уже неохота. Потом - ещё.


repeat
h := gh;
if a > 0 then exit;
for n := 1 to count do
if a = 0
 then
   begin
     b := 1;
     c := 2
   end
 else
   begin
     b := 2;
     c := 3
   end;
until g = 0;


И т. д. Код уже неудобен для чтения. Хорошо было бы прямо в Delphi задать команду для украшения кода (пусть даже свою).
Можно ли в Delphi добавить такую команду?


 
Desdechado ©   (2006-05-07 20:54) [1]

есть такая украшалка кода DelForEx


 
AlexanderMS ©   (2006-05-07 20:56) [2]


> есть такая украшалка кода DelForEx

Правда? Есть ли URL?


 
LexxX ©   (2006-05-07 20:59) [3]

Ctrl+U - сдвигает выделенный текст влево на два пробела.

Ctrl+I - сдвигает выделенный текст вправо на два пробела.


 
Anatoly Podgoretsky ©   (2006-05-07 20:59) [4]

Есть поисковые системы


 
Grom PE ©   (2006-05-07 20:59) [5]

Ctrl+Shift+U и Ctrl+Shift+I!


 
TUser ©   (2006-05-07 21:30) [6]

При выделении Alt придавить - будет выделять прямоугольными блоками. Потом можно вставить столбик пробелов.


 
Virgo_Style ©   (2006-05-07 21:36) [7]

А я это дело автоматизировал своими силами)
программка, в принципе, достаточно нехитрая получается...


 
Alx2 ©   (2006-05-07 21:39) [8]

>AlexanderMS ©   (07.05.06 20:48)
Есть бесплатные "украшатели". Встраиваются прямо в IDE.
Я пользуюсь (особо злостно при разборе чужого отбалдыкода) Source Formatter (http://www.slm.wau.nl/wkao/delforexp.html - но линк уже не работает).


 
Ы   (2006-05-07 22:02) [9]

http://www.dow.wau.nl/aew/downloads/DelForEx.zip
470кб


 
antonn ©   (2006-05-08 07:07) [10]

имхо, конечно, но так "красивше и читаемей" :)
repeat
h:=gh;
if a>0 then exit;
for n:=1 to count do
if a=0 then begin
    b:=1;
    c:=2
  end else begin
    b:=2;
    c:=3
  end;
until g=0;


 
Eraser ©   (2006-05-08 11:17) [11]


> AlexanderMS ©   (07.05.06 20:48)

лучше сразу правильно, а не "красиво" оформлять код, иначе если прийдётся работать в команде - проблем не оберёшься...

вот один из стандартов, мне больше всего нравится http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802


 
Nic ©   (2006-05-08 11:41) [12]


> repeat
> h:=gh;
> if a>0 then exit;
> for n:=1 to count do
> if a=0 then begin
>     b:=1;
>     c:=2
>   end else begin
>     b:=2;
>     c:=3
>   end;
> until g=0;

Я бы так построил:

 repeat h:=gh;
 if a>0 then exit;
 for n:=1 to count do
   if a=0 then
   begin
     b:=1;
     c:=2
   end else
   begin
     b:=2;
     c:=3
   end;
 until g=0;


 
Nic ©   (2006-05-08 11:45) [13]

А так ещё лучше:

repeat h:=gh;
  if a>0 then exit;
  for n:=1 to count do if a=0 then
  begin
    b:=1;
    c:=2
  end else
  begin
    b:=2;
    c:=3
  end;
until g=0;


 
wicked ©   (2006-05-08 11:52) [14]

> Eraser ©   (08.05.06 11:17) [11]
во многом спорный стандарт, плюс раздут до неприличия....

> Nic ©   (08.05.06 11:41) [12] и [13]
на работу я бы такого программера не взял бы....


 
vagra ©   (2006-05-08 12:06) [15]

Да какая разница? Кто как привык, тому так читать и легче. Я вот вообще отступ делаю после всего. Т.е.

 repeat h:=gh;
 if a>0 then exit;
 for n:=1 to count do if a=0 then
   begin
     b:=1;
     c:=2
   end
 else
   begin
     b:=2;
     c:=3
   end;
 until g=0;


 
Lamer@fools.ua ©   (2006-05-08 12:35) [16]

Я бы оформил так:
repeat
 h := gh;
 if a > 0 then
   Exit;
 for n := 1 to сount do
   if a = 0 then
   begin
     b := 1;
     c := 2;
   end
   else
   begin
     b := 2;
     c := 3;
   end;
until g = 0;

либо так:
repeat
 h := gh;
 if a > 0 then
   Exit;
 for n := 1 to count do
 begin
   if a = 0 then
   begin
     b := 1;
     c := 2;
   end
   else
   begin
     b := 2;
     c := 3;
   end;
 end;
until g = 0;


 
Lamer@fools.ua ©   (2006-05-08 12:36) [17]

P.S./OFFTOPIC
Елы-палы. Ну и на фиг тэг CODE, если пробелы частично всё равно съедаются?


 
Nic ©   (2006-05-08 13:10) [18]


> wicked ©   (08.05.06 11:52) [14]

Я не программер ;) И вряд ли им буду. Это только хобби.


 
Nic ©   (2006-05-08 13:10) [19]


> wicked ©   (08.05.06 11:52) [14]

Вы правда считаете, что приведённое выше оформление не читабельно?


 
saa   (2006-05-08 13:14) [20]

Nic ©   (08.05.06 13:10) [19]

И еще отладкозатруднительно.


 
Nic ©   (2006-05-08 13:17) [21]

repeat
 h := gh;
 if a > 0 then exit;
 for n := 1 to count do
 if a = 0 then
 begin
   b := 1;
   c := 2
 end else
 begin
   b := 2;
   c := 3
 end;
until g = 0;

А вот так лучше или нет?


 
wicked ©   (2006-05-08 13:17) [22]

> Lamer@fools.ua ©   (08.05.06 12:36) [17]
хозяйке на заметку:
для того, чтобы местный скрипт не сьедал столь любимые пробелы/табы в начале строки, рекомендуется ставить точечку....... да, рутина, зато все пробелы на месте....
кстати, наблюдения подсказали, что отьедает обычно только один таб или несколько пробелов....

> Nic ©   (08.05.06 13:10) [19]
угу, именно........ когда пишешь один, то этого не заметно.... но если пишешь в команде - это лишние нервы и головная/"глазная" боль....


 
wicked ©   (2006-05-08 13:19) [23]

> Nic ©   (08.05.06 13:17) [21]
да, лучше....
остальное - это холиворы на тему, где лучше размещать операторные скобки и прочие вещи....


 
Nic ©   (2006-05-08 13:20) [24]


> wicked ©   (08.05.06 13:17) [22]

В случае, если ведётся разработка несколькими людьми в команде, то, конечно, лучше взять единый стандарт оформления. И лучше - тот, в котором VCL написана. Вроде В Тейкстере и Пачеко целая глава про это есть.


 
Kolan ©   (2006-05-08 13:49) [25]

Считаю что надо делать так:
repeat
 H := Gh;
 if A > 0 then
   Exit;
 for N := 1 to Count do
   if A = 0 then
   begin
     B := 1;
     C := 2
   end
   else
   begin
     B := 2;
     C := 3
   end;
until G = 0;


Отступы снова проставлять уже неохота. Потом - ещё.

Именно так и делал. И нечего. Заодно и код просмотришь.

Ctrl+Shift+U и Ctrl+Shift+I!
К сожалению с аськой не работает... :(


 
antonn ©   (2006-05-08 15:21) [26]

а я не люблю, когда знаки присваивания и "логики" (не бейте ногами, не знаю, как их назвать правильней - := = < > :)) обрамлены пробелами. Из за них какая то каша на экране (куча символов через пробел), труднее воспринимать, приходится сначала сосредоточится на одном, потом от него искать нужный. В то время как при такой записи if a>0 then exit; текст "блоками" воспринимается - удобнее, имхо, когда текст сгруппирован...


 
Eraser ©   (2006-05-08 15:22) [27]


> wicked ©   (08.05.06 11:52) [14]
>
> > Eraser ©   (08.05.06 11:17) [11]
> во многом спорный стандарт, плюс раздут до неприличия...
> .

почему же спорный, почти то же самое, что стандарт VCL.


 
begin...end ©   (2006-05-08 15:30) [28]

> antonn ©   (08.05.06 15:21) [26]

А я люблю...
:о)


 
KilkennyCat ©   (2006-05-08 15:33) [29]


> begin...end ©


и я.
И еще я люблю зписи такого типа:
if... then begin

end else begin

end;


а не
if ... then
 begin

 end
else
 begin

 end


 
Привидение Хозяина   (2006-05-08 15:37) [30]

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


 
antonn ©   (2006-05-08 16:21) [31]

KilkennyCat ©   (08.05.06 15:33) [29]
И еще я люблю зписи такого типа:
if... then begin

end else begin

end;

и я 8)


 
Пусик ©   (2006-05-08 16:32) [32]


> Kolan ©   (08.05.06 13:49) [25]
>
> Считаю что надо делать так:
> repeat
>  H := Gh;
>  if A > 0 then
>    Exit;
>  for N := 1 to Count do
>    if A = 0 then
>    begin
>      B := 1;
>      C := 2
>    end
>    else
>    begin
>      B := 2;
>      C := 3
>    end;
> until G = 0


Вот так правильно:

repeat
 H := Gh;
 if A > 0 then Exit;
 for N := 1 to Count do
 begin
   if A = 0 then
   begin
     B := 1;
     C := 2
   end
   else
   begin
     B := 2;
     C := 3
   end;
until G = 0;


 
antonn ©   (2006-05-08 16:36) [33]

кстати, описывая локаные переменные, я предпочитаю делать так:
var i,ii,iii:integer; d,dd,ddd:double; s:single;
нежели так:
var i,ii,iii:integer;
   d,dd,ddd:double;
   s:single;


вот:)


 
AlexanderMS ©   (2006-05-08 16:40) [34]

DelForEx не соответствует моему стилю. Придётся свою писать...


 
saa   (2006-05-08 16:41) [35]

antonn ©   (08.05.06 16:36) [33]
Сиплюсплюсники бы вас убили. Ведь можно так:

var i: integer;
var ii: integer;
var iii:integer;
var d: double;
var dd: double;
var ddd:double;
var s: single;

Да и комментарий есть где поставить, ведь имена переменных неинформативны.


 
Пусик ©   (2006-05-08 16:42) [36]


> var i,ii,iii:integer; d,dd,ddd:double; s:single;
> нежели так:
> var i,ii,iii:integer;
>    d,dd,ddd:double;
>    s:single;


var
 i,ii,iii:integer;
 d,dd,ddd:double;
 s:single;


 
Nic ©   (2006-05-08 18:20) [37]

if .. then
begin
 ..
end else
begin
 ..
end;

Так вроде правильнее, нежели:

...
  end
  else
  begin
...


Хотя, главное, чтобы конечные пользователь был доволен, программа стабильно и хорошо работала и исходник был читаемым :)


 
vrem   (2006-05-08 18:27) [38]

Если не красиво оформленный и не рабочий код отформатировать как предлагается - он заработает? :)


 
VictorT ©   (2006-05-08 18:30) [39]


> Елы-палы. Ну и на фиг тэг CODE, если пробелы частично
> всё равно съедаются?

я даже догадываюсь, почему. Видимо, используется что-то типа str_replace("  ", " &amp;nbsp;"), потому, два пробела в начале строки отображаются, как один. Лучше вот так: str_replace("  ", "&amp;nbsp; ")


 
antonn ©   (2006-05-08 20:38) [40]

saa   (08.05.06 16:41) [35]
ведь имена переменных неинформативны.

а я всегда в циклах даю неиформативные имена, чтоб внимание не привлекали:) чем глубже - тем неинформативней:)



Страницы: 1 2 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.062 c
1-1145391209
Error27
2006-04-19 00:13
2006.06.04
При минимизации окна визуально пропадают некоторые элементы


15-1146739931
Pazitron_Brain
2006-05-04 14:52
2006.06.04
Что нужно, чтобы запустить IntraWeb приложение?


1-1146000057
Volf_555
2006-04-26 01:20
2006.06.04
Как перевести HotKey1.HotKey в тип String?


2-1147882049
Belorus
2006-05-17 20:07
2006.06.04
Как на форме показать .png файл?


15-1147087612
Некто_
2006-05-08 15:26
2006.06.04
Аналог TryStrToDate в php