Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.067 c
4-1142375379
wild sam
2006-03-15 01:29
2006.06.04
Сабклассинг TListBox - не ловится WM_DRAWITEM


1-1146041042
tickler
2006-04-26 12:44
2006.06.04
обратная нумерация строк в memo


6-1138710014
Stanislav
2006-01-31 15:20
2006.06.04
Пинг Свичей


2-1147848747
dest81
2006-05-17 10:52
2006.06.04
Событие от клавиатуры


15-1147291233
Victor_new
2006-05-11 00:00
2006.06.04
Wi-Fi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский