Перейти до вмісту

Хороший код


Повідомлень в темі: 40

#21 Патріот

    Ледар

  • Користувачі
  • PipPip
  • 22 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 06.02.2012 – 19:06

Використання меншої кількості змінних не означає, що потрібно користуватися одною змінною на всю програму, а те, що потрібно використовувати змінну декілька разів, коли це не впливає на швидкість виконання та простоту написання програми. І головне - не потрібно використовувати зайвих змінних. Наприклад значення двох числових змінних можна обміняти з використанням двох допоміжних змінних, а можна використати лише одну або взагалі не використовувати:
a:=a+b;
b:=a-b;
a:=a-b;

Відділяння частин коду - це не розпихання їх по всій програмі, а візуальне відмежування частин програми (пусті рядки, коментарі типу{=====...=====}) для легшого читання тексту програми.

Позначення кінців великих вкладених циклів допомагає в тих випадках, коли потрібно додати рядок вкінці в один з циклів.

for i:=1 to n do
begin
код
  for j:=1 to n do
  begin
код
  for k:=1 to n do
  begin
ще цикли
       while a>0 do
       begin
1000 рядків коду
       end; {кінець while a>0}
      end;
     end;
код
    end;
  end; {кінець for k:=1 to n}
код
end; {кінець for j:=1 to n}
код
end; {кінець for i:=1 to n}

Наприклад як додати декілька рядків в кінець циклу for k:=1 to n, коли кінці циклів не позначені і кінець циклу від початку відділяє 1000 рядків коду?
  • 0

#22 Pit

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 723 повідомлень
  • Стать:Чоловік

Відправлено 06.02.2012 – 21:27

Перегляд дописуLactarius (06.02.2012 – 11:58) писав:

Ніхто не каже, що твоя програма не повинна бути такою. Говориться про те, що чим більше ти прагнеш гнучкості - тим гірше. Тому краще розбивати все на модулі і зберігати слабку звязність. А далі просто забути про гнучкість і тримати все на своїх місцях.
В моєму розуміння, як і в FT232BM , гнучкість це також розділення на модулі) Поясни, будь-ласка, що в твоєму розумінні гнучкість?

Повідомлення відредагував Pit: 06.02.2012 – 21:28

  • 0

#23 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ->НТУУ "КПІ"

Відправлено 06.02.2012 – 23:04

Перегляд дописуПатріот (06.02.2012 – 19:06) писав:

Використання меншої кількості змінних не означає, що потрібно користуватися одною змінною на всю програму, а те, що потрібно використовувати змінну декілька разів, коли це не впливає на швидкість виконання та простоту написання програми. І головне - не потрібно використовувати зайвих змінних. Наприклад значення двох числових змінних можна обміняти з використанням двох допоміжних змінних, а можна використати лише одну або взагалі не використовувати:
a:=a+b;
b:=a-b;
a:=a-b;

Відділяння частин коду - це не розпихання їх по всій програмі, а візуальне відмежування частин програми (пусті рядки, коментарі типу{=====...=====}) для легшого читання тексту програми.

Позначення кінців великих вкладених циклів допомагає в тих випадках, коли потрібно додати рядок вкінці в один з циклів.

for i:=1 to n do
begin
код
for j:=1 to n do
begin
код
for k:=1 to n do
begin
ще цикли
while a>0 do
begin
1000 рядків коду
end; {кінець while a>0}
end;
end;
код
end;
end; {кінець for k:=1 to n}
код
end; {кінець for j:=1 to n}
код
end; {кінець for i:=1 to n}

Наприклад як додати декілька рядків в кінець циклу for k:=1 to n, коли кінці циклів не позначені і кінець циклу від початку відділяє 1000 рядків коду?
Воно ж не читається!
  • 0

#24 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 07.02.2012 – 00:41

"використовувати:
a:=a+b;
b:=a-b;
a:=a-b;"

Яку ти мову використовуєш? Хоча... в унилий паскаль... ок... скільки там інтеджер? 65 тисяч з лишнім? будь ласка обміняй мені дві змінні a := 50000 та b := 61000 цим методом у паскалі

Перегляд дописуPit (06.02.2012 – 21:27) писав:

В моєму розуміння, як і в FT232BM , гнучкість це також розділення на модулі) Поясни, будь-ласка, що в твоєму розумінні гнучкість?


Я бачу ти хочеш зі мною побакланитися.


наприклад мені треба метод який читає файл з ФС. я пишу метод, а потім думаю блін а якщо мені в іншому місці треба таке саме тільки читати з нету. і я пишу клас який тяне файл по хттп, прикручую туди спрінг щоб мати IOC та MVC і я маю супер гнучкий код... там додаю гібрнейт, щоб не залежати від бази в якій є табличка з ід власника файлу і шляхом до нього (хоча насправді мені нафіг не треба і можна обійтися nosql) а і ще все це юзати з мавеном і вуаля моя аплікуха билдиться 10-15хв. хоча можна обійтися без цього всього....

До чого я веду... НАДЛИШКОВА гнучкість дає нефіговий оверхед. Тому прошу шановних паскалістів іти далі готувати лаби в універ.

А і ще одне, якщо ви будете працювати кодерами (так саме кодерами, не стосується ФТ232БМ) то я співчуваю вашим співробітникам.

Повідомлення відредагував Lactarius: 07.02.2012 – 00:29

  • 0

#25 _Ex

    STATUS_OK

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1743 повідомлень
  • Стать:Чоловік
  • Місто:Бахмут, Південна Слобожанщина, Україна

Відправлено 07.02.2012 – 04:44

- шо таке хароший код?
- я хз.
- ходім на формуі почитаємо
- ок.
на форумі ...
"паскаль гавно... ви всі ламо..."
- ну ти просік?
- палюбе.
- пашлі розкажем на "за*бістому форумі Чорткова".
...
тєма про хароший код на "за*бістому форумі Чорткова":
- ггг. пиши
- ггг.
"лінукс рулєз паскаль гамно ви ламаз"
фак єа.
  • 2

#26 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 07.02.2012 – 12:10

Перегляд допису_Ex (07.02.2012 – 04:44) писав:

- шо таке хароший код?
- я хз.
- ходім на формуі почитаємо
- ок.
на форумі ...
"паскаль гавно... ви всі ламо..."
- ну ти просік?
- палюбе.
- пашлі розкажем на "за*бістому форумі Чорткова".
...
тєма про хароший код на "за*бістому форумі Чорткова":
- ггг. пиши
- ггг.
"лінукс рулєз паскаль гамно ви ламаз"
фак єа.

Да чувак, тільки ти пропустив найосновніше - аргументацію, в попередньому пості вона є. (Далі пояснення для тупих) Просто спробуй запустити трубопаскаль і обміняти такі змінні, я не пробував, але знаю, що такий приклад не проканає. А автор який зажав 2 грьобані байти (у випадку паскаля ібо у випадку трубопаскаля інтегер такий) буде вигрібати, бо якщо в першому рядку ( a:=a+b;) сума а та б вивалюється за ліміт, то метод всраку неправильний. зажаті 2 байти вилізуть через сраку і автор буде сидіти кілька тижнів шукаючи що сталося.

Тому чувак закінчуй тут неаргументовані сарказми про мене кидати, баклань по темі, бо мені тут нудно.
  • -1

#27 Pit

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 723 повідомлень
  • Стать:Чоловік

Відправлено 07.02.2012 – 12:33

Перегляд дописуLactarius (07.02.2012 – 00:41) писав:

А і ще одне, якщо ви будете працювати кодерами (так саме кодерами, не стосується ФТ232БМ) то я співчуваю вашим співробітникам.
Я твоїм колегам вже співчуваю.... працюють з самозакоханим ідіотом.

Цитата

Тому чувак закінчуй тут неаргументовані сарказми про мене кидати, баклань по темі, бо мені тут нудно.
То не заходь сюди, всім іншим буде веселіше)

Повідомлення відредагував Pit: 07.02.2012 – 12:38

  • 0

#28 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 07.02.2012 – 12:54

Перегляд дописуPit (07.02.2012 – 12:33) писав:

Я твоїм колегам вже співчуваю.... працюють з самозакоханим ідіотом.

То не заходь сюди, всім іншим буде веселіше)

Ідіот тут ти, я вже стільки років заходжу сюди з намаганнями вас хоч чогось розумного навчити, але ви це в упор не сприймаєте. і це блін сумно.
  • -1

#29 Pit

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 723 повідомлень
  • Стать:Чоловік

Відправлено 07.02.2012 – 13:13

Перегляд дописуLactarius (07.02.2012 – 12:54) писав:

Ідіот тут ти, я вже стільки років заходжу сюди з намаганнями вас хоч чогось розумного навчити, але ви це в упор не сприймаєте. і це блін сумно.
Бугагагагаа... ого... давно мене так на сміх не пробивало))
Чуваче, та якби би рельно шось людям поснював+повага до них, то б ціни не було. Ато в кожному пості слова "лохи", "ламери", "тупі" ітд... список можно продовжувати до безкінечності. Ти думаєш після цього з твого "навчання" є якась користь? Неа...
Так як ти себе ведеш, задється шо Майкрософт чи Гугл за тобою в чергу стають, аби ти їм істини повідав. Спустися на землю, чоловіче. Якщо хтось хоче чогось дізнатись, до допоможи раз ти спец, а не посилай в гугл і обзивай тупими чи обмеженими. Чогось FT232BM може сказати нормально и без образ а в тебе ніби комплекс з дитинства!
  • 0

#30 Окщерко

    Абориген

  • Користувачі
  • PipPipPipPip
  • 75 повідомлень

Відправлено 07.02.2012 – 16:07

імхо такі питання треба задавати на професійних форумах з великою кількістю активних читачів як stackoverflow (хоч це й не форум, але..) - бо тут у кращому разі дискусія ні до чого не приведе
  • 3

#31 Патріот

    Ледар

  • Користувачі
  • PipPip
  • 22 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 07.02.2012 – 18:35

Цитата

Яку ти мову використовуєш? Хоча... в унилий паскаль... ок... скільки там інтеджер? 65 тисяч з лишнім? будь ласка обміняй мені дві змінні a := 50000 та b := 61000 цим методом у паскалі
У паскалі тип integer(2 байти) приймає значення від -32768 до 32767 але є ще й тип longint(4 байти), який приймає значення від -2147483648 до 2147483647. Тип integer може описати 65536 різних значень, а для обміну 61000 і 50000 потрібен тип з діапазоном 50000-111000, тобто 61000 різних значень, тому можна зробити так:
program obmin;
var a,b:50000..111000;
begin
a:=50000; b:=61000;
a:=a+b;
b:=a-b;
a:=a-b;
writeln(a,' ',B);
end.
Числа 61000 і 50000 уже виходять за тип integer але можна обійтися без використання 4-х байтного longint.
  • 0

#32 Гетьман

    I am forsaken (c) Sylvanas

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 2480 повідомлень
  • Стать:Чоловік
  • Місто:Leopolis novus

Відправлено 07.02.2012 – 19:45

Java кермує!!!11

Дика тут розмітка як і у всьому динамічногенерованому ВебДваНолі, але буде цікавіше писати нову версію спамбота.
  • 0

#33 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 07.02.2012 – 22:18

Перегляд дописуПатріот (07.02.2012 – 18:35) писав:

У паскалі тип integer(2 байти) приймає значення від -32768 до 32767 але є ще й тип longint(4 байти), який приймає значення від -2147483648 до 2147483647. Тип integer може описати 65536 різних значень, а для обміну 61000 і 50000 потрібен тип з діапазоном 50000-111000, тобто 61000 різних значень, тому можна зробити так:
program obmin;
var a,b:50000..111000;
begin
a:=50000; b:=61000;
a:=a+b;
b:=a-b;
a:=a-b;
writeln(a,' ',B);
end.
Числа 61000 і 50000 уже виходять за тип integer але можна обійтися без використання 4-х байтного longint.

а ну да сорі, завтикав що інт в паскалі знаковий, таке буває коли не використовуєш, щось більше ніж 6 років (так ви позаду на 6 років, як мінімум). ну нема різниці в принципі. тоді обміняй значення 2147483643 і 2147483640. суть не в тому, чи можна обмінювати, а в тому що алгоритм обміну неправильний, те що він обмінює змінні певного типу, передбачає, що він повинен обмінювати всі значення цього типу.

На рахунок описування типу... Якщо в мене рахунок в банку... ти готовий описати його баланс таким типом?

Навіть не кажучи про те, що це не очевидно.


Я вот жаль, що вибираючи банк, я не можу поколупатися в сорсах. Може варто тримати гроші в шкарпетці?
  • -2

#34 _Ex

    STATUS_OK

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 1743 повідомлень
  • Стать:Чоловік
  • Місто:Бахмут, Південна Слобожанщина, Україна

Відправлено 07.02.2012 – 23:55

Перегляд дописуLactarius (07.02.2012 – 12:10) писав:

Да чувак, тільки ти пропустив найосновніше - аргументацію, в попередньому пості вона є. (Далі пояснення для тупих) Просто спробуй запустити трубопаскаль і обміняти такі змінні, я не пробував, але знаю, що такий приклад не проканає. А автор який зажав 2 грьобані байти (у випадку паскаля ібо у випадку трубопаскаля інтегер такий) буде вигрібати, бо якщо в першому рядку ( a:=a+b;) сума а та б вивалюється за ліміт, то метод всраку неправильний. зажаті 2 байти вилізуть через сраку і автор буде сидіти кілька тижнів шукаючи що сталося.

Тому чувак закінчуй тут неаргументовані сарказми про мене кидати, баклань по темі, бо мені тут нудно.
:D Цікаво, що ти сприйняв саме на свою адресу. Ну сам же.
Якщо срач на почві двух байтів - це аргументи, то я згоден з тобою: такий метод обміну мені не подобається. але якщо ти не помічаєш, що твій стиль аргументації є кидання понтами і занадто показово зневажний до всієї решти, то це пагано вже для тебе. звьоздная балєзнь, правда незрозмуіло (ну точніше невідомо) на якому ґрунті вона в тебе зросла. Байдуже, я написав жарт про атмосферу яка панує в таких і подібних темах. у нас на форумах не спілкуються, а понтуються і сруться. а насправді ніхто тут ні ти ні я ні ще хтось ніякий не супер програміст щоб брати на себе сміливість вчити інших і взагалі всіляко тут менторствувати. хоча б тому що в суперпрограмістів часу не було б тут завісати і тролити паскалістів чи ще кого. хтось це усвідомлює хтось нє.
по темі: я помішаний на ефективності роботи, тому для мене хороший - це той що найшвидший. хоча це більше мета, гасло, адже далеко не завжди так легко це вияснити - просто не вистачає знань. але ж тут про те що хто вважає хорошим, тобто сам він, а не обовязково про правильні і основоположні рекомендації з книг написаних визнаними експертами. Звісно, - дотримуватися в конкретній галузі тих рекомендацій - це мабуть найголовніший признак хорошости коду. Ну тоді, можна вирізати ціитати з тих поважних книг і кидати їх сюда. кому хочеться.

Перегляд дописуLactarius (07.02.2012 – 22:18) писав:

Я вот жаль, що вибираючи банк, я не можу поколупатися в сорсах. Може варто тримати гроші в шкарпетці?
Скоріш за все, адже дуже імовірно що воно на делфях. :D Недавно якраз саме банківський заказ зустрічав з категоричною вимогою Delphi.
  • 0

#35 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ->НТУУ "КПІ"

Відправлено 08.02.2012 – 22:55

Перегляд дописуОкщерко (07.02.2012 – 16:07) писав:

імхо такі питання треба задавати на професійних форумах з великою кількістю активних читачів як stackoverflow (хоч це й не форум, але..) - бо тут у кращому разі дискусія ні до чого не приведе
А ти думаєш чому я цю тему створив? :) Я знав знав, що цим закінчиться.

Повідомлення відредагував FT232BM: 08.02.2012 – 22:55

  • 0

#36 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 09.02.2012 – 10:24

На стековерфлові теж би нічого толкового не написали, порадили би читати книжку. Найкраща рекомендація, щоб писати хороший код - намагатися не писати поганого. а поганий код він часто пишеться, просто з цього треба вчитися.
  • 0

#37 Dr. Zlo

    Місцевий

  • Користувачі
  • PipPipPipPipPipPip
  • 293 повідомлень
  • Стать:Чоловік

Відправлено 09.02.2012 – 11:23

Цитата

Найкраща рекомендація, щоб писати хороший код - намагатися не писати поганого
Кеп аплодує стоячи :wink2:
  • 0

#38 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 09.02.2012 – 12:27

Зображення
  • 3

#39 Гетьман

    I am forsaken (c) Sylvanas

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 2480 повідомлень
  • Стать:Чоловік
  • Місто:Leopolis novus

Відправлено 09.02.2012 – 20:34

Цікаво, чи в цій темі дописує хоч один мідл (я не кажу навіть про сіньйорів)?
  • 0

#40 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ->НТУУ "КПІ"

Відправлено 10.02.2012 – 00:08

Перегляд дописуГетьман (09.02.2012 – 20:34) писав:

Цікаво, чи в цій темі дописує хоч один мідл (я не кажу навіть про сіньйорів)?
Сіньйорів-помідорів? Багато контор навіть не може дозволити собі таку класифікацію. Кадрів для кожного з напрямів не багато. Так шо тут і проджект манагери є :) (які девелоплять, кодять і манагять)

Повідомлення відредагував FT232BM: 10.02.2012 – 00:08

  • 0



Кількість користувачів, що читають цю тему: 1

0 користувачів, 1 гостей, 0 анонімних