BG Development


  Reply to this topicStart new topicStart Poll

> Кой стил на писане е по-добър
cracker.
Публикувано на: 30-11-2023, 00:18
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 26
Регистриран на: 13.11.23



Има една платформа, в която цъкаш задачи и излизат сорс кодовете на другите решили я.Доста от хората там се стараят да пишат възможно най-малко редове.Лично според мен моя вариант е по-дълъг, но по-лесно смилаем за окото.Как би било по-добре да се реши следната задача.Всякаква критика по кода ми е добре дошла.

Условие:
CODE
A Narcissistic Number is a number that equals the sum of each of its digits raised to the number of digits. For example, 153 is a Narcissistic Number because 1^3 + 5^3 + 3^3 = 153.

You will be given an integer num and are to return true if the integer is a Narcissistic Number and false if it is not.


Краткото решение на тигъра от платформата:
CODE
def narcissistic(value):
   return value == sum(int(x) ** len(str(value)) for x in str(value))



Моят начин:
CODE
def sumDigits(my_digits):
   return_value = 0;
   for x in my_digits:
       return_value += pow(x,len(my_digits));
   return return_value;
def narcissistic(number):
   digits = [int(x) for x in str(number)];
   summedDigits = sumDigits(digits);
   if summedDigits == number:
       return True
   return False;


Добра пракика ли е да се придържам към one liners или да не се страхувам да разгъна малко кода?
PMEmail Poster
Top
ici
Публикувано на: 30-11-2023, 00:45
Quote Post


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

Мнения: 18494
Регистриран на: 06.06.04



От гледна точка на "traceability" не е добре всичко да е на един ред.
Документацията също е проблем, гледай да нямаш редове с повече от 80 символа, ако се налага - слагай \ и минавай надолу.
Ако някой ти прави ревю на кода също ще имаш проблеми.



Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
cracker.
Публикувано на: 30-11-2023, 00:50
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 26
Регистриран на: 13.11.23



QUOTE (ici @ 30-11-2023, 00:45)
От гледна точка на "traceability" не е добре всичко да е на един ред.
Документацията също е проблем, гледай да нямаш редове с повече от 80 символа, ако се налага - слагай \ и минавай надолу.
Ако някой ти прави ревю на кода също ще имаш проблеми.

благодаря, Ици!
PMEmail Poster
Top
relax4o
Публикувано на: 30-11-2023, 01:42
Quote Post



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

Мнения: 2797
Регистриран на: 04.04.07



Не гледай как пишат код по такива платформи. Старай се кода да е, колкото може по-четим, особено ако и други ще го четат (то и за теб, след месец - два и ти няма да помниш какво си писал).

Прекалената експлиситност понякога също не е добра практика.

Например тук:
CODE

def narcissistic(number):
  digits = [int(x) for x in str(number)];
  summedDigits = sumDigits(digits);
  if summedDigits == number:
      return True
  return False;


бих премахнал репетицията на return, особено в случаите на връщане на булевва стойност. Може да се напише и така:

CODE

def narcissistic(number):
  digits = [int(x) for x in str(number)];
  summedDigits = sumDigits(digits);
 
  return summedDigits == number;


Така или иначе, ако си в екип най-вероятно вече има установен стил на писане и ще е най-добре да следваш него, за да поддържаш консистентен код с останалите от екипа.

Това мнение е било редактирано от relax4o на 30-11-2023, 01:42


--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
SuN
Публикувано на: 30-11-2023, 22:48
Quote Post


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

Мнения: 12666
Регистриран на: 27.01.05



QUOTE
Добра пракика ли е да се придържам към one liners или да не се страхувам да разгъна малко кода?

Няма значение. Стила ти така или иначе ще се променя с опита и знанията. Горе-долу на всеки 6 до 12 месеца. Ако искат да те задържат някъде, но стила е единственият проблем, ще ти чукат канчето докато се подобри.


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
Бай Аз
Публикувано на: 01-12-2023, 13:07
Quote Post



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

Мнения: 269
Регистриран на: 04.02.21



Сега, за различните типове езици си има различни норми на писане.

Моите съвети са:

1. Да се придържаш към стандарта за писане на съответния език
2. Когато е възможно - пиши на повече редове и оставяй разстояния по един ред между блоковете
3. Пиши си коментари в кода - кое какво прави и коя променлива за какво служи
(Че като си погледнеш кода след 1-2 години - променлива x - нищо няма да ти говори!

Специално за CSS ползвам комбиниран стил на писане:

1. Когато има само едно стилово правило - го пиша на един ред
2. Когато са повече стилови правила - ги пиша на няколко реда

Пример:
1.
CODE
header {height: 120px;}

2.
CODE
header h1 {
      font-family: Georgia;
      text-align: center;
}
PMEmail Poster
Top
cracker.
Публикувано на: 01-12-2023, 18:22
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 26
Регистриран на: 13.11.23



Благодаря на всички, отделили от времето си, да ми отговорят!
Живи и здрави!

Това мнение е било редактирано от cracker. на 01-12-2023, 18:22
PMEmail Poster
Top
wqw
Публикувано на: 02-12-2023, 14:56
Quote Post


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

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



QUOTE (cracker. @ 30-11-2023, 00:18)
Краткото решение на тигъра от платформата:
CODE
def narcissistic(value):
   return value == sum(int(x) ** len(str(value)) for x in str(value))



Моят начин:
CODE
def sumDigits(my_digits):
   return_value = 0;
   for x in my_digits:
       return_value += pow(x,len(my_digits));
   return return_value;
def narcissistic(number):
   digits = [int(x) for x in str(number)];
   summedDigits = sumDigits(digits);
   if summedDigits == number:
       return True
   return False;


Добра пракика ли е да се придържам към one liners или да не се страхувам да разгъна малко кода?

Второто си личи, че е писано от noob -- сори but not sorry.

За да започнеш да пишеш просто и четливо първо трябва да се научиш да пишеш като първото решение, кратко и нечетливо, но коректно и без излишни глупости. След което да го направиш и просто и четливо (не глупаво и redundant както е в момента).

cheers,
</wqw>


--------------------
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


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