Re: Он думает, что пишет качественный код. Скоро его мнение изменится
От: blainethemono  
Дата: 30.04.13 05:05
Оценка: +4 :)))
Здравствуйте, CompleteBrains, Вы писали:

Ну минусы все отписали. Переработанная версия должна быть уже почти идеал ))
По мне — для начала нормуль. Я б тебя в команду взял, я не сноб )
Основной плюс — разобраться и переписать этот код будет не слишком сложно. Так же импонирует подход к проработке, вектор, так сказать.
Re[2]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: tpascal  
Дата: 30.04.13 05:16
Оценка:
Здравствуйте, ioj, Вы писали:
ioj>т.к. налицо ООП головного мозга и возраст автора < 20 лет.
где ты там ООП увидел? Там типичный структурный подход, но функции хаотично обьеденены в несколько классов. Возможно он перепутал кейворды namespace и class и хотел лишь по неймспесам разбить их.
Re[2]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Vzhyk  
Дата: 30.04.13 05:19
Оценка:
On 29.04.2013 21:20, Геннадий Васильев wrote:

> Так... Пустые методы — зачем растаскивать скобки на несколько строк?

Что за фантазии. Наоборот читать легче.

> using namespace std — то есть, то нет.

Лучше вообще не использовать это.

> Табуляции в форматировании — зло.

Пробелы в форматировании — зло.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 30.04.13 06:29
Оценка: 1 (1) +1
Здравствуйте, IT, Вы писали:

ГВ>>Табуляции в форматировании — зло.

IT>А за пробелы повбывав бы.

Вот за шо надо вбывать так это за микс табов и пробелов в одном и том же отступе.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: tpascal  
Дата: 30.04.13 06:41
Оценка:
эт случаем не ТЗ сюда
Автор: Lokk
Дата: 05.04.13
?
Re[2]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: alpha21264 СССР  
Дата: 30.04.13 08:22
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>А смысл ? Код должен решать задачу, допускать расширение в разумных пределах и его можно было бы саппортить. Зачем его в рамочку ставить ?


Задачи бывают разные. Например — обучение. Как надо и как не надо делать.

Течёт вода Кубань-реки куда велят большевики.
Re[3]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: мыщъх США http://nezumi-lab.org
Дата: 30.04.13 08:34
Оценка:
Здравствуйте, tpascal, Вы писали:

T> Забей, "идеальный код" — понятие очень субьективное.

T> Как бы тут его не вылизывали, интервьювер всеравно найдет кчему докапаться.
давайте определим "идеальный код" как "код, который нельзя улучшить", т.е. к нему ни прибавить, ни отнять. а субъективность в стиле "табуляция вместо пробелов" легко устраняется гайдлайнами по стилю. кстати, если смесь табуляций с пробелам сохраняет форматирование и структура не разваливается при любом значении табуляции от 1 до ... (ну пускай будет до 79), то проблемы нету.

ЗЫ. тут другая собака повалялась. а именно -- длина строк. сейчас практически у всех широкоугольные мониторы и потому ограничение в 80 символов на строку (а оно есть во многих гайдлайнах по стилю) выглядит издевательством. с другой стороны, если ему следовать, то на широкоугольном мониторе можно открыть три листинга по вертикали.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Он думает, что пишет качественный код. Скоро его мнение изменится
От: мыщъх США http://nezumi-lab.org
Дата: 30.04.13 08:43
Оценка: -1
Здравствуйте, CompleteBrains, Вы писали:


CB>Итак, налетай народ, валим нуба!

вопрос -- зачем передавать windowHandler как аргумент в Input.cpp? храните это внутри экземпляра класса, а присваивайте при инициализации.



//if ( keyBuffer['Q'] & 0xF0 ) shift += Player->GetUp() * distance;
//if ( keyBuffer['E'] & 0xF0 ) shift -= Player->GetUp() * distance;

это ужос. делайте #if 0 или #ifdef (_something_).
в этом случае IDE посвечивает "выключенный" код, а ifdef легко "включить" одним движением. а ваши комментарии -- после того как вы их раскоментируете, вы забудете как и что закомментировать обратно.

ЗЫ. тренируйтесь в написании кода на бумаге. в несложных задачках, которые влезают в полсотни строк. так быстрее добиться "просветления".
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: jazzer Россия Skype: enerjazzer
Дата: 30.04.13 08:43
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>Здравствуйте, tpascal, Вы писали:


T>> Забей, "идеальный код" — понятие очень субьективное.

T>> Как бы тут его не вылизывали, интервьювер всеравно найдет кчему докапаться.
М>давайте определим "идеальный код" как "код, который нельзя улучшить", т.е. к нему ни прибавить, ни отнять.

Вне контекста задачи это определение бессмысленно.

М>ЗЫ. тут другая собака повалялась. а именно -- длина строк. сейчас практически у всех широкоугольные мониторы и потому ограничение в 80 символов на строку (а оно есть во многих гайдлайнах по стилю) выглядит издевательством. с другой стороны, если ему следовать, то на широкоугольном мониторе можно открыть три листинга по вертикали.


длинные строки в программах плохи по той же причине, по какой плохи длинные строки в тексте.

Плюс иногда приходится еще на терминале просматривать/патчить сорцы, а распахивать терминал на весь экран — это извращение.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CompleteBrains  
Дата: 30.04.13 09:26
Оценка:
Да, блин, вы меня размазали, мокрого места не оставили и моя самооценка теперь в несколько раз ниже. Но я вас все равно обожаю и не забуду, так что не парьтесь.

А теперь переходим к сути:

ГВ>Зачем нужна struct Pointer?

Я ненавижу нижнее подчеркивание

ГВ>/* За такие вещи полагается месяц читать Страуструпа вслух по пять часов в день. */

Это потому что везде где встречается например not (DontKillMe()) будет замена символов? А еще причины есть?

ГВ>Ещё убери пустые комментарии "Description:", зачем они? Или заполни их содержательным текстом.

Чтобы методы визуально отделять друг от друга иначе они сливаю в сплошное мессиво

A>С++ там и рядом не лежал, ни С++11, ни вообще С++

Я как-то не врубаюсь. Что значит «С++ там и рядом не лежал»? То есть что нужно сделать чтобы он там появился? В двух словах, мне хватит

A>синглтоны глаза режут

Хреновые конкретно мои синглтоны или вообще?

A>Syntax.h это вообще жесть, я думал так только индусы могут

Why? А то действительно, не понимаю

TSP>А во вторых голая баба в комментах только время сборки увеличивает.

Я думал на комменты компилятору положить, ошибся?

8>а еще полно тупых комментов, типа:

Отмазка: иногда такие нужны чтобы быстро понять, что тут делается не вникая в код

ioj>дефайны на стандартные вещи — удел полных *даков

Why? Why? Oh God WHY?

ioj>геттеры/сеттеры для полей, изменение которых не нарушает контракт интерфеса — удел полных *даков

Я нихрена не понял. Зачем проектировать интерфейс а потом его нарушать своими же методами?

ioj>использование в хидерах типов, которые подключаются неявно

Да, это отстой. Но у меня возникла проблема когда я попытался найти это в коде. Требуется помощь

ioj> т.к. налицо ООП головного мозга и возраст автора < 20 лет.

В смысле я не врубаюсь в ООП совсем? Что совсем, совсем? И да, мне 12 лет

A>Походил по папкам, почитал исходники. Этот код smells.

Конкретика. Конкретика, блин. Конкретика это одно из величайший изобретений человечества, пользуйтесь им.

T>где ты там ООП увидел? Там типичный структурный подход, но функции хаотично обьеденены в несколько классов

Конкретные примеры, пару штук, я ведь прошу так мало

Что-то не то. Вы все к деталям придираетесь, к в вопросам касательно вкусов, как будто там не нет более существенных косяков. Короче никакое не мясо, а так, щеночки сосиску покусали. И да, очень недостает аргументов на конкретных примерах. Вас что, никто критике не учил?
Re[4]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: cosimo http://sapozhnikov.pro
Дата: 30.04.13 09:31
Оценка: +2 :)
CC>Вот за шо надо вбывать так это за микс табов и пробелов в одном и том же отступе.
Re[5]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: ioj Ниоткуда  
Дата: 30.04.13 10:38
Оценка: +1
Здравствуйте, CompleteBrains, Вы писали:

CB>Что-то не то. Вы все к деталям придираетесь, к в вопросам касательно вкусов, как будто там не нет более существенных косяков. Короче никакое не мясо, а так, щеночки сосиску покусали. И да, очень недостает аргументов на конкретных примерах. Вас что, никто критике не учил?


лично мне откровенно лень объяснять, не потому что долго или что-то, а потому что бесполезно. Чтобы тебе начать понимать некоторые простые вещи ( типа *удацких дефайнов ) тебе необходимо хоть раз поработать в команде С++ разработчиков хотя бы месяц, более сложные вещи ( вроде ненужности геттеров/сеттеров, синглтонов и прочего ) нужно поработать более продолжительное время, написать для начала тысяч сто строк на С++, и тогда придёт понимание. Пока же тебе что-либо объяснять бессмысленно, как бессмысленно объяснять новичку зачем нужно программу разбивать на функции, а не писать всё сразу в main. И да, не нужно отвечать "ну вы ответьте всё равно, я пойму", я вижу как и что ты отвечаешь на уже существующие замечания, и это лишний раз подтверждает что не в коня корм.
нормально делай — нормально будет
Re[2]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: enji  
Дата: 30.04.13 10:43
Оценка:
Здравствуйте, ioj, Вы писали:

ioj>нубас, смари, кароч, первое чо те надо уяснить:

RTFM — правила форума

ioj>дефайны на стандартные вещи — удел полных *даков

+1
ioj>statefull синглтоны — удел полных *даков
Тут вопрос. Скажем стандартный ввод/вывод сделан на глобальных переменных, причем не только в С++, но и в том же питоне. Аналогичная ситуация с логированием.

ioj>геттеры/сеттеры для полей, изменение которых не нарушает контракт интерфеса — удел полных *даков

тут тоже вопрос. Лично я обычно или делаю структуру, в которой все поля открыты (и возможно есть несколько методов для удобства) или класс, в котором все поля закрыты...

ioj>использование в хидерах типов, которые подключаются неявно, как следствие важна очерёдность подключения хидеров в cpp — удел полных *даков

+1

ioj>а я ведь только 2 минуты поглядел

а я вообще не глядел, лениво
Re[6]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CompleteBrains  
Дата: 30.04.13 11:25
Оценка: -1
Здравствуйте, ioj, Вы писали:

ioj>Здравствуйте, CompleteBrains, Вы писали:


CB>>Что-то не то. Вы все к деталям придираетесь, к в вопросам касательно вкусов, как будто там не нет более существенных косяков. Короче никакое не мясо, а так, щеночки сосиску покусали. И да, очень недостает аргументов на конкретных примерах. Вас что, никто критике не учил?


ioj>лично мне откровенно лень объяснять, не потому что долго или что-то, а потому что бесполезно. Чтобы тебе начать понимать некоторые простые вещи ( типа *удацких дефайнов ) тебе необходимо хоть раз поработать в команде С++ разработчиков хотя бы месяц, более сложные вещи ( вроде ненужности геттеров/сеттеров, синглтонов и прочего ) нужно поработать более продолжительное время, написать для начала тысяч сто строк на С++, и тогда придёт понимание. Пока же тебе что-либо объяснять бессмысленно, как бессмысленно объяснять новичку зачем нужно программу разбивать на функции, а не писать всё сразу в main. И да, не нужно отвечать "ну вы ответьте всё равно, я пойму", я вижу как и что ты отвечаешь на уже существующие замечания, и это лишний раз подтверждает что не в коня корм.


Ну да конечно, тебе лень объяснять, зато писать «отстой» и отмазки на полстраницы тебе не лень. Все эта туфта про бессмысленно и бесполезно – классический съезд когда сказал что-то не подумав а тебя подловили на этом. Ты кое в чем прав, но всем на это положить пока не докажешь свою правоту. Короче, школьник и то, выкрутился бы посолидней.
Re[2]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Privalov  
Дата: 30.04.13 11:49
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>В хидерах что-то мрачное, намекающее на необходимость отлучения автора от клавиатуры (мои комментарии в: /* */):


ГВ>
ГВ>/* За такие вещи полагается месяц читать Страуструпа вслух по пять часов в день. */
ГВ>// Logic symbols
ГВ>#define equals      ==
ГВ>#define not          !
ГВ>#define notequal  !=
ГВ>#define and          &&
ГВ>#define or          ||
ГВ>


Синтаксис неправильный же! Надо так:

// Logic symbols
#define .EQ.     ==
#define .NE.     !=
#define .AND.    &&
#define .OR.     ||
#define .NOT.    !
#define .LE.     <=
#define .GE.     >=
#define .LT.     <
#define .GT.     >
Re[5]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: alpha21264 СССР  
Дата: 30.04.13 13:10
Оценка: -1
Здравствуйте, CompleteBrains, Вы писали:

CB>Да, блин, вы меня размазали, мокрого места не оставили и моя самооценка теперь в несколько раз ниже. Но я вас все равно обожаю и не забуду, так что не парьтесь.


CB>В смысле я не врубаюсь в ООП совсем? Что совсем, совсем? И да, мне 12 лет


Слушай, если тебе действительно 12 лет, тебе нужно в футбол играть и математику учить.
Программирование — это для мальчиков постарше. Лет с 14 можно начинать.
Когда мне было 12 лет, компьютерами были ЕС-ки и основным языком Фортран-4.
Вот как ты думаешь, пригодилось бы оно мне?

Течёт вода Кубань-реки куда велят большевики.
Re[5]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 30.04.13 13:50
Оценка: +4
Здравствуйте, CompleteBrains, Вы писали:

Ой, как всё запущено-то...

ГВ>>Зачем нужна struct Pointer?

CB>Я ненавижу нижнее подчеркивание

На здоровье! Но когда ты передашь свой код кому-то ещё, он вынужден будет заново уяснять, как обозначены указатели. И фиг бы с ним, но ты же ещё раскидал копии этой структуры по разным хидерам — это-то нафига делать?

ГВ>>/* За такие вещи полагается месяц читать Страуструпа вслух по пять часов в день. */

CB>Это потому что везде где встречается например not (DontKillMe()) будет замена символов? А еще причины есть?

Это потому, что когда C++-программист будет читать твой код и увидит "and", "not", "or", первое, что он подумает, что это переменная или какое-то специфическое служебное слово из последних изысков. А вдруг это вообще — название класса? А если это макро, то какие у него побочные эффекты? Чтобы ответить на эти вопросы ему придётся копаться в хидерах, хотя этого можно было бы и избежать. Ровно то же самое относится к null и Space/Tab/Endl.

А что, наконец, делать с битовыми операциями? Они тоже — and/or/xor. Как будешь обозначать? bitand, bitor, bitxor?

Потом, тебе нравится "and" (строчные буквы), а кому-то, положим, нравится "AND" (прописные буквы). Вы сделаете два Syntax.h...

И на сладкое. Например, в boost встречаются методы null(). Догадываешься, какой будет эффект, если попытаться совместить boost с Syntax.h?

ГВ>>Ещё убери пустые комментарии "Description:", зачем они? Или заполни их содержательным текстом.

CB>Чтобы методы визуально отделять друг от друга иначе они сливаю в сплошное мессиво

А просто разделители без текстов поставить — нет? Текст пишут для того, чтобы его читали, либо не пишут вообще. Если читать в комментарии нечего — нарисуй вместо него линию.

A>>Syntax.h это вообще жесть, я думал так только индусы могут

CB>Why? А то действительно, не понимаю

Потому что не надо пытаться делать из C++ другой язык программирования с другим синтаксисом. Если тебе нужен другой язык — возьми этот самый другой язык и успокойся.

8>>а еще полно тупых комментов, типа:

CB>Отмазка: иногда такие нужны чтобы быстро понять, что тут делается не вникая в код

Вот как раз поэтому я и сказал тебе, что не надо пытаться под кого-то косить. Программист с приличным опытом не нуждается в бессодержательных комментариях, потому что привык читать код.

ioj>>дефайны на стандартные вещи — удел полных *даков

CB>Why? Why? Oh God WHY?

Потому что к стандартным вещам все уже привыкли и вот такая запись не вызывает вопросов:

if (!Foo()) {...}


а вот такая заставляет задумываться, о чём она, вообще:

if (not Foo()) {...}


Что это за not? Будет ли здесь вызвано неявное приведение типа, возвращаемого Foo к bool? Или к int? Или есть какой-нибудь MySuperBoolean?

ioj>>использование в хидерах типов, которые подключаются неявно

CB>Да, это отстой. Но у меня возникла проблема когда я попытался найти это в коде. Требуется помощь

По видимому имеются в виду типы вроде Vector и Matrix. Кстати говоря, я тоже не понял, зачем ты ввёл эти переопределения. Но ioj тут лучше ответит.

CB>Что-то не то. Вы все к деталям придираетесь, к в вопросам касательно вкусов, как будто там не нет более существенных косяков. Короче никакое не мясо, а так, щеночки сосиску покусали. И да, очень недостает аргументов на конкретных примерах. Вас что, никто критике не учил?


Не знаю, кому как, но мне стало безразлично, что у тебя там за суть, после того, как я увидел вакханалию очередного улучшения языка. Автор явно сосредоточен не на том, на чём следовало бы.

Вот ещё прекрасное (не помню уже, где именно, а код ты убрал):

if (x) { ... } // x - число с плавающей точкой


Ты в курсе о погрешностях вычислений с плавающей точкой?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 30.04.13 13:58
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> Так... Пустые методы — зачем растаскивать скобки на несколько строк?

V>Что за фантазии. Наоборот читать легче.

Зато кататься по тексту — дольше. В прочем, это не особо важный момент.

>> using namespace std — то есть, то нет.

V>Лучше вообще не использовать это.

Иногда using namespace std приносит пользу, но лучше не смешивать в одном блоке std:: и using namespace std.

>> Табуляции в форматировании — зло.

V>Пробелы в форматировании — зло.

Хорошо, хорошо, уговорили. В конце концов, пробелы и табуляции — наименьшее из зол.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Vzhyk  
Дата: 30.04.13 15:46
Оценка: +1 :)
On 30.04.2013 16:58, Геннадий Васильев wrote:

> Зато кататься по тексту — дольше. В прочем, это не особо важный момент.

На мышке есть нынче очень приятное колесико.

> Иногда using namespace std приносит пользу, но лучше не смешивать в

> одном блоке std:: и using namespace std.
А потом какой "самородок" внезапно совтсвенный велосипед строк
присобачит, или такой велосипед уже с незапамятных времен, где
паралельно в проекте живет и с ним ты просто не пересекся. Зато баги
потом после ловить очень весело.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 30.04.13 15:59
Оценка: +1
Здравствуйте, CompleteBrains, Вы писали:

CB>Ну да конечно, тебе лень объяснять, зато писать «отстой» и отмазки на полстраницы тебе не лень.


Это тебя абсолютно не касается. Критик сказал "лень" — значит, ему лень. Скажи спасибо, что тебе вообще ответили — будешь много выступать, будут вообще игнорировать.

CB>Все эта туфта про бессмысленно и бесполезно – классический съезд когда сказал что-то не подумав а тебя подловили на этом.


Это ты про себя?

Короче никакое не мясо, а так, щеночки сосиску покусали.


CB>Ты кое в чем прав, но всем на это положить пока не докажешь свою правоту. Короче, школьник и то, выкрутился бы посолидней.


Трудно сказать, психологию школьников мы тут уже, как-то, подзабыли.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.