Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...
Здравствуйте, Сергей И., Вы писали:
СИ>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...
Качественным я вляется код, которого не существует. Пример на Java:
В этом коде нет ошибок, его легко дописывать, легко переиспользовать, легко проверить. И что самое главное, его написал самый-умный-программер-на-свете
Здравствуйте, Сергей И., Вы писали:
СИ>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...
#include <iostream>
int main()
{
std::cout << "Hello, world!\n";
}
Точно соответствует поставленной задаче, ничего лишнего, не требует комментариев, отлично сопровождается, переносим.
Здравствуйте, _DAle_, Вы писали:
СИ>>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...
_DA>
Здравствуйте, Сергей И., Вы писали:
СИ>Господа, а может кто-нибудь запостит куски кода, на любых языках программирования, которые он считает качественными и напишет почему он их такими считает...
Ну мне например очень нравится код библиотеки www.antigrain.com
Считаю его качественным.
Andrei N.Sobchuck wrote:
> Качественным я вляется код, которого не существует. Пример на Java:
> В этом коде нет ошибок, его легко дописывать, легко переиспользовать, > легко проверить. И что самое главное, его написал > самый-умный-программер-на-свете
Комментариев нет. Плохо.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, kan_izh, Вы писали:
_>Andrei N.Sobchuck wrote:
>> Качественным я вляется код, которого не существует. Пример на Java: _>
_>
>> В этом коде нет ошибок, его легко дописывать, легко переиспользовать, >> легко проверить. И что самое главное, его написал >> самый-умный-программер-на-свете _>Комментариев нет. Плохо.
Как это нет? Весь код, который есть в этой программе отлично закоментирован.
_DA>>Точно соответствует поставленной задаче, ничего лишнего, не требует комментариев, отлично сопровождается, переносим.
А разве у функции main нет параметров?
_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>".
_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[]) { /* ... */ }
Здравствуйте, _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, то в качестве кода возврата будет использоваться мусор, что, в общем-то, бывает некритично.
Здравствуйте, dshe, Вы писали:
D>Здравствуйте, _DAle_, Вы писали:
LM>>>А разве у функции main нет параметров?
_DA>>Хм, наверное, здесь есть какая-то тонкая шутка, но я не понял в чем она.
D>Функция main обычно cdecl и extern "C". Т.е. ее параметры со стека очищает вызывающая функция, а не она сама. И имя ее не приукрашается типами параметров. Поэтому все параметры перечислять необязательно, достаточно лишь нескольких первых (но не переборщить ). D>
D>Насчет возвращаемого значения. Оно используется как код возврата, но если main возвращает void, то в качестве кода возврата будет использоваться мусор, что, в общем-то, бывает некритично.
Код был на языке с++, я привел цитату из стандарта с++. Рассказывать мне, какой должна быть функция main, да еще с кучей ошибок, пожалуйста, не надо
распространяется по лицензии GNU GPL v2, что значит, что любое его использование в своей программе приводит к переходу проги под GPL. Но если вы портируете данный код на другой язык, то можете выбрать любую другую лицензию.
ANS>Качественным я вляется код, которого не существует. Пример на Java: ANS>
ANS>
В связи с этим серьезный вопрос. Сколько времени должно тратиться на разработку такого кода (на этапе проектирования, как я понимаю). И как заставить манагеров поверить в перспективность такого подхода.
Здравствуйте, stalcer, Вы писали:
S>В связи с этим серьезный вопрос. Сколько времени должно тратиться на разработку такого кода (на этапе проектирования, как я понимаю). И как заставить манагеров поверить в перспективность такого подхода.
На то чтобы придумать настолько продуманный код нужно время — это правда. Возможно комуто быстрее будет взять, например, студию и при помощи автокомплита быстро наколотить код, который теоретически делает тоже самое, но не такой красивый. Однако, хоть код будет компилироваться, не факт, что он будет работать (ну не верю я Владу, что если код прошол компиляцию, то значит, что в нём нет ошибок), его будет трудно модифицировать и расширять, и понадобится немалое время на рефакторинг.
Что касается манегеров, то, как известно "лучше день потерять, потом за 5 минут долететь" (С) известный всем мультфильм. А они любят, когда всё за 5 минут.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Что касается манегеров, то, как известно "лучше день потерять, потом за 5 минут долететь" (С) известный всем мультфильм. А они любят, когда всё за 5 минут.
Здравствуйте, 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 достаточно, например, для описания сериализации своих классов, но недостаточно в большинстве других сценариев.