BG Development


Страници: (6) [1] 2 3 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Да споделяме знание 2, Простата е съвършенство, нали
Golden Gega
Публикувано на: 09-08-2018, 15:49
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 919
Регистриран на: 04.06.10



Всеизвестно е че по българските форуми бъка от експерти, много от тях със солиден преподавателски опит.
Според някои от тях вече стана на въпрос че затварящите тагове </li> са тъпотия, защото така или иначе браузерите се оправят без тях. Възхитен от този подход реших да се запитам - а не правим ли подобни неща и при писането на код? Вече сложих този пост, но темата беше дълга и явно не всеки иска да чете. Ето го и въпроса:

След като е по-правилно да се пише:

CODE
<ul>
 <li>option 1
 <li>option 2
 ...


Тогава как е по-правилно да се напише (примера е за c#):

CODE
bool p = true;
if (p == true) // нещо си


или

CODE
if (p) // нещо си

PMEmail Poster
Top
saruman
Публикувано на: 09-08-2018, 15:59
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1974
Регистриран на: 21.07.10



Аз ползвам

CODE
if(false == p)


Това мнение е било редактирано от saruman на 09-08-2018, 15:59


--------------------
http://www.wefunkradio.com/radio/

Remember,remember the fifth of November
PMEmail Poster
Top
johnfound
Публикувано на: 09-08-2018, 16:03
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 6471
Регистриран на: 27.05.04



CODE
if p then something();


Разбира се. Винаги съм мразил условията в скоби в C-подобните езици.


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 2B446ADCEC7E180CD4C59391D81D4CAB3E99CA7AE767DB3AB45AF976F8A2050FF071DDB733F1
PMEmail PosterUsers Website
Top
40oz
Публикувано на: 09-08-2018, 16:06
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 203
Регистриран на: 23.05.13



Конкретно за пишман преподавателите е най-добре да не пишат и отварящи тагове.
PMEmail Poster
Top
fast_user
Публикувано на: 09-08-2018, 16:06
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 394
Регистриран на: 19.09.12



Aко е с подобно неразбираемо име(p) ползвам == false/true, ako обаче има четимо име, не:
CODE

int nIQ = 90;
if(bUseLinux)
{
  nIQ +=200;
}


Това мнение е било редактирано от fast_user на 09-08-2018, 16:07


--------------------
Linux is only free if your time has no value.
Linux Akbar
PMEmail Poster
Top
Golden Gega
Публикувано на: 09-08-2018, 16:35
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 919
Регистриран на: 04.06.10



johnfound, според един изтъкнат експерт тотално не си прав. За целта ще вземем пример от един популярен и модерен език за програмираме - Visual Basic 6.0, и съответните примери от едно много популярно и успешно ръководство "ПРОГРАМИРАНЕ от Антон Яначков" - http://programirane.bivaood.com/

Конкретния пример е http://programirane.bivaood.com/primeri/6/6.1.htm
Както се вижда признак на добра практика и култура на програмиране е следния код:

CODE
If Timer1.Enabled = True Then


а не да кажем тъпото и селско кратко (в стил johnfound)

CODE
If Timer1.Enabled Then


За скобите - в този модерен език скоби няма, но има други средства които илюстрират подхода, ето тук например - http://programirane.bivaood.com/primeri/2/2.5.htm
Следния код показва спазване на стандартите и добрите техники за програмиране:

CODE
If lRet > 0 Then
   GetShortFilename = Left$(sShortFilename, lRet)
End If


вместо просташкия съкратен вариант

CODE
If lRet > 0 Then GetShortFilename = Left$(sShortFilename, lRet)


Някои зловредни елементи може да твърдят че това спазване на стандартите се дължи на autocomplete/autoformat функцията на редактора на Visual Studio 6.0, други злобно биха казали че автора просто е некадърен и тия неща не ги знае.
Остава да гадаем защо принципа за махането на излишните неща тук не се спазва. Аз лично нямам обяснение.
PMEmail Poster
Top
Антон Яначков
Публикувано на: 09-08-2018, 22:47
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Редовен член

Мнения: 582
Регистриран на: 27.07.16



QUOTE (Golden Gega @ 09-08-2018, 16:35)
Остава да гадаем защо принципа за махането на излишните неща тук не се спазва. Аз лично нямам обяснение.

Но аз имам. Виждам, че втора нова тема в моя чест си отворил. Браво!
Явно ди преценил, че с предишната тема не си успял да постигнеш целта и си оворил нова тема. Така трябва, основно правило гласи - ако не си успял опитай пак. И така опитвай до като не успееш.

Това мнение е било редактирано от Антон Яначков на 09-08-2018, 22:49
PMEmail PosterUsers Website
Top
Barnabas
Публикувано на: 10-08-2018, 09:10
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 408
Регистриран на: 02.03.15



CODE
if(p != false) // дъра бъра ...

ползвам аз
PMEmail Poster
Top
wqw
Публикувано на: 10-08-2018, 09:29
Quote Post


Group Icon
Име: Владимир Висулчев
Група: VIP
Ранг: Почетен член

Мнения: 5768
Регистриран на: 10.06.04



QUOTE (Антон Яначков @ 09-08-2018, 22:47)
QUOTE (Golden Gega @ 09-08-2018, 16:35)
Остава да гадаем защо принципа за махането на излишните неща тук не се спазва. Аз лично нямам обяснение.

Но аз имам.

Имаш-имаш, но със сигурност грешно обяснение. . . Виж този кодец
CODE
Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Form_Load()
   Dim bEnabled        As Boolean
   
   Call CopyMemory(bEnabled, &HDEADBEEF, 4)
   '-- bad
   If bEnabled = True Then
       Debug.Print "Dam"
   ElseIf bEnabled = False Then
       Debug.Print "Mne"
   Else
       Debug.Print "Wat!"
   End If
   '-- good
   If bEnabled Then
       Debug.Print "Right"
   End If
End Sub

Във VBA една Boolean променлива може да не е нито True нито False и тогава тъпизми като `If Timer1.Enable = True Then` са тотален провал при положение че `If Timer1.Еnable Then` без да сравняваш с True хем е по-кратко хем и работи коректно.

Не случайно хората сравняват `p != false` -- така като искат да се правят на интересни поне пишат коректен код.

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
Антон Яначков
Публикувано на: 10-08-2018, 10:19
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Редовен член

Мнения: 582
Регистриран на: 27.07.16



QUOTE (wqw @ 10-08-2018, 09:29)
Във VBA една Boolean променлива може да не е нито True нито False и тогава тъпизми като `If Timer1.Enable = True Then` са тотален провал при положение че `If Timer1.Еnable Then` без да сравняваш с True хем е по-кратко хем и работи коректно.

Хей големи теоритици брей!
Само където показаният код не е на VBA. Хубаво е когато, някой се произнася от позицията на голям разбирач, първо да се е научил да различава езиците. В случая това личи от пръв поглед. Във VBA таймери няма, освен ако сам не си ги изградиш. А във Visual Basic 6.0 таймера допуска само две състояния на свойството Enabled. Таймера или е въведен или не. Философии от сорта, че може един таймер и да е въведен и в същото време да не е въведен са приказки от Шехерезада. Visual Basic 6.0 е най-дуракоустойчивият език. Ако напишеш глупост, той ще ти я посочи веднага. В моята десетилетна практика с Visual Basic 6.0 съм писал IF-a по най-различен начин и нямам нито един спомен, IF да се е издънил по подобни причини.

Това мнение е било редактирано от Антон Яначков на 10-08-2018, 10:21
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (6) [1] 2 3 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0