LINUX.ORG.RU

Ответ на: комментарий от AX

http://websvn.kde.org/

А ну да ну да. Просто образец для подражания. Первый совершенно случайно выбранный код:

http://websvn.kde.org/trunk/KDE/kdelibs/kdecore/network/klocalsocket_unix.cpp?view=markup

238     bool KLocalSocketServerPrivate::listen(const QString &path, KLocalSocket::LocalSocketType aType)
239     {
240         qDeleteAll(pendingConnections);
241         pendingConnections.clear();
242 	
243         if (aType == KLocalSocket::UnixSocket || aType == KLocalSocket::AbstractUnixSocket) {
244             KSockaddrUn addr(path, aType);
245             if (!addr.ok()) {
246                 emitError(QAbstractSocket::NetworkError, i18n("Specified socket path is invalid"));
247                 return false;
248             }

......тут пара экранов портянок.....

312             return true;
313         }
314 	
315         return false;
316     } 

И так - на каждом шагу. Врагу не пожелаю таких девелуперов.

bibi
()
Ответ на: комментарий от linux4ever

>С чем это у тебя тортик?

ХЗ, с вишнями похоже.

AX ★★★★★
()
Ответ на: комментарий от Divius

GNU HelloWorld!

Ага. Ну посмотрим посмотрим. Сколько у GNU выйдет написать 'Здравствуй мир!'.

http://ftp.gnu.org/gnu/hello/

[   ] hello-2.5.tar.gz          07-Feb-2010 12:21  569K

Уже недурно. Т.е. архивчик с хеловорд по-гнутому тянет почти на 600к. Оч хорошо. А шо там унутри? Ага..

/* hello.c -- print a greeting message and exit.

   Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005,
   2006, 2007, 2008, 2010 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

#include <config.h>
#include "system.h"

/* String containing name the program is called with.  */
const char *program_name;

static const struct option longopts[] =
{
  { "greeting", required_argument, NULL, 'g' },
  { "help", no_argument, NULL, 'h' },
  { "next-generation", no_argument, NULL, 'n' },
  { "traditional", no_argument, NULL, 't' },
  { "version", no_argument, NULL, 'v' },
  { NULL, 0, NULL, 0 }
};

/* Different types of greetings; only one per invocation.  */
typedef enum {
  greet_gnu, greet_new, greet_traditional, greet_user
} greeting_type;

/* Forward declarations.  */
static void print_help (void);
static void print_version (void);

int
main (int argc, char *argv[])
{
  int optc;
  int lose = 0;
  const char *greeting_msg = NULL;
  greeting_type g = greet_gnu;

  program_name = argv[0];

  /* Set locale via LC_ALL.  */
  setlocale (LC_ALL, "");

#if ENABLE_NLS
  /* Set the text message domain.  */
  bindtextdomain (PACKAGE, LOCALEDIR);
  textdomain (PACKAGE);
#endif

  /* Even exiting has subtleties.  On exit, if any writes failed, change
     the exit status.  The /dev/full device on GNU/Linux can be used for
     testing; for instance, hello >/dev/full should exit unsuccessfully.
     This is implemented in the Gnulib module "closeout".  */
  atexit (close_stdout);

  while ((optc = getopt_long (argc, argv, "g:hntv", longopts, NULL)) != -1)
    switch (optc)
      {
      /* --help and --version exit immediately, per GNU coding standards.  */
      case 'v':
        print_version ();
        exit (EXIT_SUCCESS);
        break;
      case 'g':
        greeting_msg = optarg;
        g = greet_user;
        break;
      case 'h':
        print_help ();
        exit (EXIT_SUCCESS);
        break;
      case 'n':
        g = greet_new;
        break;
      case 't':
        g = greet_traditional;
        break;
      default:
        lose = 1;
        break;
      }

  if (lose || optind < argc)
    {
      /* Print error message and exit.  */
      if (optind < argc)
        fprintf (stderr, _("%s: extra operand: %s\n"),
         program_name, argv[optind]);
      fprintf (stderr, _("Try `%s --help' for more information.\n"),
               program_name);
      exit (EXIT_FAILURE);
    }

  /* Print greeting message and exit. */
  if (g == greet_traditional)
    printf (_("hello, world\n"));

  else if (g == greet_new)
    /* TRANSLATORS: Use box drawing characters or other fancy stuff
       if your encoding (e.g., UTF-8) allows it.  If done so add the
       following note, please:

       [Note: For best viewing results use a UTF-8 locale, please.]
    */
    printf (_("\
+---------------+\n\
| Hello, world! |\n\
+---------------+\n\
"));
  else if (g == greet_user)
    puts (greeting_msg);

  else if (g == greet_gnu)
    puts (_("Hello, world!"));

  else {
    /* No need for this impossible message to be translated.  */
    fprintf (stderr, "Impossible hello value %d\n", g);
    exit (EXIT_FAILURE);
  }

  exit (EXIT_SUCCESS);
}

/* Print help info.  This long message is split into
   several pieces to help translators be able to align different
   blocks and identify the various pieces.  */

static void
print_help (void)
{
  /* TRANSLATORS: --help output 1 (synopsis)
     no-wrap */
        printf (_("\
Usage: %s [OPTION]...\n"), program_name);

  /* TRANSLATORS: --help output 2 (brief description)
     no-wrap */
  fputs (_("\
Print a friendly, customizable greeting.\n"), stdout);

  puts ("");
  /* TRANSLATORS: --help output 3: options 1/2
     no-wrap */
  fputs (_("\
  -h, --help          display this help and exit\n\
  -v, --version       display version information and exit\n"), stdout);

  puts ("");
  /* TRANSLATORS: --help output 4: options 2/2
     no-wrap */
  fputs (_("\
  -t, --traditional       use traditional greeting format\n\
  -n, --next-generation   use next-generation greeting format\n\
  -g, --greeting=TEXT     use TEXT as the greeting message\n"), stdout);

  printf ("\n");
  /* TRANSLATORS: --help output 5+ (reports)
     TRANSLATORS: the placeholder indicates the bug-reporting address
     for this application.  Please add _another line_ with the
     address for translation bugs.
     no-wrap */
  printf (_("\
Report bugs to: %s\n"), PACKAGE_BUGREPORT);
#ifdef PACKAGE_PACKAGER_BUG_REPORTS
  printf (_("Report %s bugs to: %s\n"), PACKAGE_PACKAGER,
          PACKAGE_PACKAGER_BUG_REPORTS);
#endif
#ifdef PACKAGE_URL
  printf (_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
#else
  printf (_("%s home page: <http://www.gnu.org/software/%s/>\n"),
          PACKAGE_NAME, PACKAGE);
#endif
  fputs (_("General help using GNU software: <http://www.gnu.org/gethelp/>\n"),
         stdout);
}
/* Print version and copyright information.  */

static void
print_version (void)
{
  printf ("hello (GNU %s) %s\n", PACKAGE, VERSION);
  /* xgettext: no-wrap */
  puts ("");

  /* It is important to separate the year from the rest of the message,
     as done here, to avoid having to retranslate the message when a new
     year comes around.  */
  printf (_("\
Copyright (C) %s Free Software Foundation, Inc.\n\
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
This is free software: you are free to change and redistribute it.\n\
There is NO WARRANTY, to the extent permitted by law.\n"),
              "2010");
}

Ну что ж, молодцы. Аплодирую стоя. Учитесь, студенты, как нужно выбивать бабло в pay-per-line проектах. Снять минимум сто баксов за обычный 'Hello world' - это вам не хрен в проруби. Тут явно матерые человечищи. Как бы не сам RMS приложил свою божественную руку.

bibi
()
Ответ на: комментарий от bibi

Я так понял, это пример того, как оформлять код для GNU. Он маленьким быть не должен, чтобы учесть много моментов.

Хотя на говно немного и похоже...

Yareg ★★★
()

Возьми быдлокод типа Битрикса, больше не будешь просить.

mobile
()
Ответ на: комментарий от NekoExMachina

А что лично Вы советуете в качестве хорошего, годного кода?

С ходу ничего в голову не приходит. Хорошие полезные проекты - может быть. Но вот код - не знаю. Куда не копни везде одно и то же. Собственно голый код - это лишь часть разработки. А есть ведь ещё и сопроводительная документация, комментарии, стиль в конце-концов. Все почему-то хромают то на ту ножку то на эту. Но чтобы все было идеально - хбз. К примеру, Qtщная документация доставляет. Подавляющему количеству опсорсных проектов до неё пилить и пилить, да. Но вот как посмотришь порой в исходники - сразу, бывает, за валидолом рука тянется. Это как колбаса - лучше не знать, что внутри.

Другие BSD?

Боже упаси. Они все генетически растут из одного, того самого, места, и в сущности своей едины аки Горыныч. Уж с чем с чем, а с их кодом я в своё время наплясялся предостаточно. 'Душераздирающее зрелище' (с) Иа-Иа.

bibi
()
Ответ на: комментарий от bibi

> Ну что ж, молодцы. Аплодирую стоя.

Я аплодирую стоя твоему невежеству.
Попробуй прочитать описание проекта GNU Hello, клоун.

Sphinx ★★☆☆
()
Ответ на: комментарий от bibi

А своих пару проэктов может быть выложите, м?
И судя по предыдущему сообщению, GNU куда хуже любого BSD по качеству кода, так?

NekoExMachina
()
Ответ на: комментарий от NekoExMachina

А своих пару проэктов может быть выложите, м?

В принципе без проблем. Пиши в личку, о цене договоримся.

И судя по предыдущему сообщению, GNU куда хуже любого BSD по качеству кода, так?

По большому счету они вполне равноценны.

bibi
()
Ответ на: комментарий от kost-bebix

openbsd

Таа, особенно их VFS. Ну не их - практически общий для BSD и даже, кусками, солярки. Ну просто идеал. С другой стороны, все относительно. На фоне линуксового, может, и действительно вполне ничего..

bibi
()
Ответ на: комментарий от hor

бггг, тогда смелой забей и иди девушками заниматься... :)

надо хоть чутка представлять что ты хочешь достигнуть, а то тебе сейчас накидают от lua'шных скриптов и ruby до исходников ядра и всяких бустов

и накукуй тебе такой разброс?

shty ★★★★★
()
Ответ на: комментарий от bibi

Ну у них очень неплохо (судя по тому, что в журнале писали) всё сделано для того, чтобы начать писать куда угодно, правда жёсткий отбор приема патчей, ибо не должно быть хаков и должна быть документация и прочее. Код, конечно, не идеален у разных проектов)

kost-bebix ★★
()
Ответ на: комментарий от shty

Ну если стишок хороший - он на любом языке звучит красиво. Я же не кинусь безразборно изучать то, что мне накидают.

hor
() автор топика
Ответ на: комментарий от hor

Ну если стишок хороший - он на любом языке звучит красиво.

оке, давай я тебе сейчас подкину стишок на арабском, сомневаюсь что ты его сможешь хотя бы прочитать, не говоря уж о том чтобы оценить его красоту :)

Я же не кинусь безразборно изучать то, что мне накидают.

это не очень хорошее вложение времени, честно.... какую цель Вы ставите перед собой заведя вот такой тред?

shty ★★★★★
()
Ответ на: комментарий от kost-bebix

Ну у них очень неплохо (судя по тому, что в журнале писали) всё сделано для того, чтобы начать писать куда угодно, правда жёсткий отбор приема патчей, ибо не должно быть хаков и должна быть документация и прочее. Код, конечно, не идеален у разных проектов)

В контексте ядра особенно доставило предположение о том, что 'должна быть документация' :)))

bibi
()
Ответ на: комментарий от shty

это не очень хорошее вложение времени, честно.... какую цель Вы ставите перед собой заведя вот такой тред?

Скажу по секрету (только тсс!) это - мой бот. Да, я их иногда пару-тройку раз в месяц пускаю на волю погулять да темы разные флеймовые погенерить. Скучто ведь. Пятница опять же. Правда судя по всему что-то в таблице весов сбилось и они сильно начали налегать на темы поиска 'идеальных исходников'. Уже вроде как третий тред за последний месяц. Каюсь, подзапустил. Нужно будет на досуге пофиксить.

bibi
()
Ответ на: комментарий от shty

>какую цель Вы ставите перед собой заведя вот такой тред?

Хотелось код хороший найти, хоть на каком-нибудь языке, расширить свои жалкие знания тупого бота.

hor
() автор топика
Ответ на: комментарий от bibi

Извините пожалуйста, я больше не буду. Поиском пользовался - не нашел. На досуге лучше удали меня.

hor
() автор топика
Ответ на: комментарий от shty

Это и будет «все подряд смотреть», я поэтому и попросил что-то хорошее посоветовать. Ладно-ладно. *Молча беру лопату и ухожу*.

hor
() автор топика
Ответ на: комментарий от kost-bebix

Ну, комментарии в коде — лучшая документация же.

Ну во-первых это сам по себе весьма пагубный подход. Ибо код - кодом но это отнюдь не заменяет дизайн системы. Лишь её частная реализация. Одна из. Опят же, даже простыми комментариями ядра обоих творений зачастую совсем не изобилуют. А уж описанием тех или иных функций - назначение, агрументы, результат, сторонние эффекты - и подавно.

bibi
()
Ответ на: комментарий от bibi

> А ну да ну да. Просто образец для подражания. Первый совершенно случайно выбранный код:

http://websvn.kde.org/trunk/KDE/kdelibs/kdecore/network/klocalsocket_unix.cpp...


И что тут не так? По-моему, вы, сударь, страдаете хернёй. Код читабелен и не избыточен.

Врагу не пожелаю таких девелуперов


Полезных проектов в твоём исполнении вообще не видели. Поэтому поубавь ЧСВ.

fang
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.