Примеры качественного кода
От: Сергей И.  
Дата: 06.04.06 10:36
Оценка:
Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...
Re: Примеры качественного кода
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.04.06 10:59
Оценка: +1 :))) :))) :)))
Здравствуйте, Сергей И., Вы писали:

СИ>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...


Качественным я вляется код, которого не существует. Пример на Java:


В этом коде нет ошибок, его легко дописывать, легко переиспользовать, легко проверить. И что самое главное, его написал самый-умный-программер-на-свете
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re: Примеры качественного кода
От: _DAle_ Беларусь  
Дата: 06.04.06 11:00
Оценка: -1
Здравствуйте, Сергей И., Вы писали:

СИ>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...


#include <iostream>

int main()
{
    std::cout << "Hello, world!\n";
}



Точно соответствует поставленной задаче, ничего лишнего, не требует комментариев, отлично сопровождается, переносим.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Примеры качественного кода
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.04.06 11:06
Оценка:
Здравствуйте, _DAle_, Вы писали:

СИ>>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...


_DA>
_DA>#include <iostream>

_DA>int main()
_DA>{
_DA>    std::cout << "Hello, world!\n";
_DA>}
_DA>



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


Угу. И где I18N? Кстати гнутый хело-ворлд имеет *не* одну версию.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re: Примеры качественного кода
От: korzhik Россия  
Дата: 06.04.06 11:12
Оценка:
Здравствуйте, Сергей И., Вы писали:

СИ>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...


Ну мне например очень нравится код библиотеки www.antigrain.com
Считаю его качественным.
Re[2]: Примеры качественного кода
От: kan_izh Великобритания  
Дата: 06.04.06 11:33
Оценка: :))
Andrei N.Sobchuck wrote:

> Качественным я вляется код, которого не существует. Пример на Java:



> В этом коде нет ошибок, его легко дописывать, легко переиспользовать,

> легко проверить. И что самое главное, его написал
> самый-умный-программер-на-свете
Комментариев нет. Плохо.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: Примеры качественного кода
От: prVovik Россия  
Дата: 06.04.06 11:40
Оценка:
Здравствуйте, kan_izh, Вы писали:

_>Andrei N.Sobchuck wrote:


>> Качественным я вляется код, которого не существует. Пример на Java:

_>
_>


>> В этом коде нет ошибок, его легко дописывать, легко переиспользовать,

>> легко проверить. И что самое главное, его написал
>> самый-умный-программер-на-свете
_>Комментариев нет. Плохо.

Как это нет? Весь код, который есть в этой программе отлично закоментирован.
лэт ми спик фром май харт
Re[3]: Примеры качественного кода
От: LuciferMoscow Россия  
Дата: 06.04.06 11:45
Оценка:
_DA>>
_DA>>#include <iostream>

_DA>>int main()
_DA>>{
_DA>>    std::cout << "Hello, world!\n";
_DA>>}
_DA>>

_DA>>Точно соответствует поставленной задаче, ничего лишнего, не требует комментариев, отлично сопровождается, переносим.
А разве у функции main нет параметров?
Re[2]: Примеры качественного кода
От: i-maverick Россия  
Дата: 06.04.06 11:51
Оценка: 8 (2) -3
Здравствуйте, _DAle_, Вы писали:

_DA>
_DA>#include <iostream>

_DA>int main()
_DA>{
_DA>    std::cout << "Hello, world!\n";
_DA>}
_DA>


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


— Remove iostream. Many programmers #include <iostream> purely out of habit as soon as they see anything resembling a stream nearby. X does make use of streams, that's true; but it doesn't mention anything specifically from iostream. At the most, X needs ostream alone, and even that can be whittled down:

— Replace ostream with iosfwd. Parameter and return types only need to be forward-declared, so instead of the full definition of ostream we really only need its forward declaration. In the old days, you could just replace "#include <ostream>" with "class ostream;" in this situation, because ostream used to be a class. Alas, no more -- ostream is now typedef'd as basic_ostream<char>, and that basic_ostream template gets a bit messy to forward-declare. All is not lost, though; the standard library helpfully provides the header iosfwd, which contains forward declarations for all of the stream templates (including basic_ostream) and their standard typedefs (including ostream). So all we need to do is replace "#include <ostream>" with "#include <iosfwd>".

Herb Sutter

Так что работайте над собой
Re[3]: Примеры качественного кода
От: igna Россия  
Дата: 06.04.06 12:55
Оценка:
Здравствуйте, i-maverick, Вы писали:

IM>Herb Sutter


Это интересно.


IM>Так что работайте над собой


А это -1.


http://rsdn.ru/Forum/RateList.aspx?mid=1825989
Re[4]: Примеры качественного кода
От: _DAle_ Беларусь  
Дата: 06.04.06 13:47
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

_DA>>>
_DA>>>#include <iostream>

_DA>>>int main()
_DA>>>{
_DA>>>    std::cout << "Hello, world!\n";
_DA>>>}
_DA>>>

_DA>>>Точно соответствует поставленной задаче, ничего лишнего, не требует комментариев, отлично сопровождается, переносим.
LM>А разве у функции main нет параметров?

Хм, наверное, здесь есть какая-то тонкая шутка, но я не понял в чем она.
3.6.1/2

An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }

... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[5]: Примеры качественного кода
От: dshe  
Дата: 06.04.06 15:06
Оценка:
Здравствуйте, _DAle_, Вы писали:

LM>>А разве у функции main нет параметров?


_DA>Хм, наверное, здесь есть какая-то тонкая шутка, но я не понял в чем она.


Функция main обычно cdecl и extern "C". Т.е. ее параметры со стека очищает вызывающая функция, а не она сама. И имя ее не приукрашается типами параметров. Поэтому все параметры перечислять необязательно, достаточно лишь нескольких первых (но не переборщить ).
int main() {...}
int main(int argc) {...}
int main(int argc, char **args) {...}
int main(int argc, char **args, char **envs) {...}


Насчет возвращаемого значения. Оно используется как код возврата, но если main возвращает void, то в качестве кода возврата будет использоваться мусор, что, в общем-то, бывает некритично.
--
Дмитро
Re[6]: Примеры качественного кода
От: _DAle_ Беларусь  
Дата: 06.04.06 15:15
Оценка:
Здравствуйте, dshe, Вы писали:

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


LM>>>А разве у функции main нет параметров?


_DA>>Хм, наверное, здесь есть какая-то тонкая шутка, но я не понял в чем она.


D>Функция main обычно cdecl и extern "C". Т.е. ее параметры со стека очищает вызывающая функция, а не она сама. И имя ее не приукрашается типами параметров. Поэтому все параметры перечислять необязательно, достаточно лишь нескольких первых (но не переборщить ).

D>
D>int main() {...}
D>int main(int argc) {...}
D>int main(int argc, char **args) {...}
D>int main(int argc, char **args, char **envs) {...}
D>


D>Насчет возвращаемого значения. Оно используется как код возврата, но если main возвращает void, то в качестве кода возврата будет использоваться мусор, что, в общем-то, бывает некритично.


Код был на языке с++, я привел цитату из стандарта с++. Рассказывать мне, какой должна быть функция main, да еще с кучей ошибок, пожалуйста, не надо
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Примеры качественного кода
От: Сергей И.  
Дата: 06.04.06 20:02
Оценка:
Децствительно! Потрясающее качество!!
Вы не будете против если я процитирую его где-нибудь? Разумеется с указанием авторства!
Re[2]: Примеры качественного кода
От: Сергей И.  
Дата: 06.04.06 20:04
Оценка:
Судя по примерам приведенным ниже, вы несколько переборщили, назвыав этот код качественным.
Re[3]: Примеры качественного кода
От: Сергей И.  
Дата: 06.04.06 20:06
Оценка:
А вот это действительно интересно...
Спасибо.
Re[2]: Примеры качественного кода
От: Сергей И.  
Дата: 06.04.06 20:07
Оценка:
Ну чтоже, я закачал себе библиотеку, как только выдастся свободная минутка обязательно взгляну Спасибо.
Re[4]: Примеры качественного кода
От: igna Россия  
Дата: 06.04.06 22:12
Оценка: +2
Здравствуйте, Сергей И., Вы писали:

СИ>А вот это действительно интересно...



Да, но не для применения здесь
Автор: _DAle_
Дата: 06.04.06
.

Объект cout объявлен в файле <iostream>.
Re[3]: Примеры качественного кода
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.04.06 07:01
Оценка: :)))
Здравствуйте, Сергей И., Вы писали:

СИ>Вы не будете против если я процитирую его где-нибудь? Разумеется с указанием авторства!


Запросто. Данный Java-код
Автор: Andrei N.Sobchuck
Дата: 06.04.06
распространяется по лицензии GNU GPL v2, что значит, что любое его использование в своей программе приводит к переходу проги под GPL. Но если вы портируете данный код на другой язык, то можете выбрать любую другую лицензию.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[2]: Примеры качественного кода
От: Пацак Россия  
Дата: 07.04.06 07:30
Оценка: :))
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Качественным я вляется код, которого не существует. Пример на Java:

ANS>
    
ANS>


Что интересно — даже с точки зрения синтаксического оверхеда не придерешься!
Ку...
Re[2]: Примеры качественного кода
От: stalcer Россия  
Дата: 07.04.06 10:09
Оценка: :)
Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>Качественным я вляется код, которого не существует. Пример на Java:

ANS>
    
ANS>


В связи с этим серьезный вопрос. Сколько времени должно тратиться на разработку такого кода (на этапе проектирования, как я понимаю). И как заставить манагеров поверить в перспективность такого подхода.
Re[3]: Примеры качественного кода
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.04.06 10:27
Оценка: :)
Здравствуйте, stalcer, Вы писали:

S>В связи с этим серьезный вопрос. Сколько времени должно тратиться на разработку такого кода (на этапе проектирования, как я понимаю). И как заставить манагеров поверить в перспективность такого подхода.


На то чтобы придумать настолько продуманный код нужно время — это правда. Возможно комуто быстрее будет взять, например, студию и при помощи автокомплита быстро наколотить код, который теоретически делает тоже самое, но не такой красивый. Однако, хоть код будет компилироваться, не факт, что он будет работать (ну не верю я Владу, что если код прошол компиляцию, то значит, что в нём нет ошибок), его будет трудно модифицировать и расширять, и понадобится немалое время на рефакторинг.
Что касается манегеров, то, как известно "лучше день потерять, потом за 5 минут долететь" (С) известный всем мультфильм. А они любят, когда всё за 5 минут.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[4]: Примеры качественного кода
От: stalcer Россия  
Дата: 07.04.06 10:37
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Что касается манегеров, то, как известно "лучше день потерять, потом за 5 минут долететь" (С) известный всем мультфильм. А они любят, когда всё за 5 минут.


Дык и я про тоже .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Примеры качественного кода
От: vdimas Россия  
Дата: 07.04.06 12:17
Оценка:
Здравствуйте, i-maverick, Вы писали:

IM>- Remove iostream. Many programmers #include <iostream> purely out of habit as soon as they see anything resembling a stream nearby. X does make use of streams, that's true; but it doesn't mention anything specifically from iostream. At the most, X needs ostream alone, and even that can be whittled down:


IM>- Replace ostream with iosfwd. Parameter and return types only need to be forward-declared, so instead of the full definition of ostream we really only need its forward declaration. In the old days, you could just replace "#include <ostream>" with "class ostream;" in this situation, because ostream used to be a class. Alas, no more -- ostream is now typedef'd as basic_ostream<char>, and that basic_ostream template gets a bit messy to forward-declare. All is not lost, though; the standard library helpfully provides the header iosfwd, which contains forward declarations for all of the stream templates (including basic_ostream) and their standard typedefs (including ostream). So all we need to do is replace "#include <ostream>" with "#include <iosfwd>".


IM>Herb Sutter


IM>Так что работайте над собой


Ты сначала попытайся скомпиллировать этот пример после применения своих советов. В общем, как обычно, требуется понимание механизма компиляции С++. Действительно, iosfwd достаточно, например, для описания сериализации своих классов, но недостаточно в большинстве других сценариев.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.