Перейти к содержанию

Кто какой стиль кодинга предпочитает?


Какой стиль кодинга предпочитаете?  

94 пользователя проголосовало

  1. 1. Какой стиль кодинга предпочитаете?

    • Краткий код
      19
    • Достаточно понятный для меня
      44
    • Понятный для всех
      12
    • Максимально откомментированный и понятный
      19


Рекомендуемые сообщения

Это раньше нуно было делать прогу маленькой и бысторой, счас мощности позволяют)))

Угу, ценой постоянного увеличения мощностей - то-есть постоянных затрат. Это своего рода внегласный заговор межу прогаммистами и инженерами, первые облегчают себе жизнь за счет увеличения потребления ресурсов, инженеры дают новые процессоры/память, а в конечном итоге пользователю приходится идти и тратится. Незнаю каму как, а я против такой цепи. Ктому-же она ведет к постепенной деградации первых.

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

Ну незнаю. Вообще никогда не видел смысла в копипасте чужого кода. Другое дело, что если этото код изначально писался для повторного ипользования (читай - библиотека).

Ссылка на комментарий
Угу, ценой постоянного увеличения мощностей - то-есть постоянных затрат. Это своего рода внегласный заговор межу прогаммистами и инженерами, первые облегчают себе жизнь за счет увеличения потребления ресурсов, инженеры дают новые процессоры/память, а в конечном итоге пользователю приходится идти и тратится. Незнаю каму как, а я против такой цепи. Ктому-же она ведет к постепенной деградации первых.

Еще есть мнение, что увеличение мощности влечет за собой оптимизацию программ: на медленном железе не заметны тормоза приложений, а на быстром - очень заметны (: Забавно, да? (:

ЗЫ: Конкретно я сменил инструмент, но железо осталось прежним: п3 1.2ггц, 512 мб оперативы. На работе, вобще п3 800 мгц (: И не жалею тех призрачных ~10% производительности С++ за преимущества D.

Ссылка на комментарий
на медленном железе не заметны тормоза приложений

Это можно понять, но вот

увеличение мощности влечет за собой оптимизацию программ

Мне кажется это совершенно не логичным. Тоесть, к примеру, перейдя с П2 на П4 программист отказывается от vector/arraylist в пользу массива и ручного распределения памяти? Скорее тому другие причины. Ну да это уже офтоп и холивр.

А по сабжу: кто как оценивает принуждение к форматированию кода в питоне? Мне эта идея кажется излишней и потенциально опасной.

Ссылка на комментарий

Мне кажется это совершенно не логичным. Тоесть, к примеру, перейдя с П2 на П4 программист отказывается от vector/arraylist в пользу массива и ручного распределения памяти? Скорее тому другие причины.

Да нет, просто если в программе что то работает медленно, то на более мощном железе это заметнее - а значит и стимул это исправить больше (: Ну, это я так, к слову (:

А по сабжу: кто как оценивает принуждение к форматированию кода в питоне? Мне эта идея кажется излишней и потенциально опасной.

Форматирование - вещь правильная. Как там в codingstyle.txt из доков ядра: "представьте себе человека, который всю ночь разбирался в чужом коде - вот для него есть разница сколько пробелов в отступе: 4 или 8" (: А если его нет в принципе, то это ахтунг. Но, к примеру, в haskell есть альтернатива отступам... Альтернатива это тоже неплохо (;

Ссылка на комментарий

седня в своей CMS смотрел функцию получения прав модератора в разделе ... правил ее раз 5 заново, мозги ппц такая хрень напрягает, когда ищешь субкатегории и для каждой права подбираешь xX и все ради того только, чтобы сократить число запросов с 20 до 3х :)

Ссылка на комментарий

The_Ice

Теперь представим "составной оператор" (это как его по умному называют, т.е. новая область видимости, тело функции и т.п.) в виде обязательное форматирование кода, ну соотвтетсвенно мало мальски сложный код, в 2-3 уровня вложенности и... один маааленький пробел, поставленный не в том месте. В итоге получим ошибку из разряда опечаток (!), которую интерпретатор может и не отловить(!), и которая возможно не один час нервов у её сделавшего.

Ссылка на комментарий
седня в своей CMS смотрел функцию получения прав модератора в разделе ... правил ее раз 5 заново, мозги ппц такая хрень напрягает, когда ищешь субкатегории и для каждой права подбираешь xX и все ради того только, чтобы сократить число запросов с 20 до 3х

Была у меня такая задача годик назад, сделал довольно просто и (по крайней мере как я считаю) эффективно:

Что имеем:

Статьи/категории в виде дерева в таблице в которой есть поля Id и Up-родитель. Если это верхняя категория то Up=0.

Что сделал:

1) добавил поле Path - путь к категории в виде перечисления родителей(например: .0.2.10.115.333.)

2) для автозаполнения этого поля создал хранимую функцию calc_path(id), вычисляющую ее путь, и триггеры с установкой этого поля для записи и зависимых записей при инсерте, апдейте и делите.

В итоге имеем простую и быструю работу со всякими вычислениями родителей или потомков через простой like '%.1.%'

Ссылка на комментарий
  • 2 недели спустя...
стараюсь писать самодокументированный код с комментариями и шириной в 80 символов.

что-то типо:


/**
* Модуль для работы с системными службами
* License: GPLv2
* Authors: Дамбаев Алесандр, [email protected]
* Copyrights: Дамбаев Александр, [email protected]
* Date: Jul 26, 2009
* Version: 1.0
* Example:
* ---
* import prt_ctrl. scm;
* Scm scm = new Scm;
* Service svc = scm. open_service( "Prt_Service");
* try
* {
* svc. stop( );
* }catch( Exception e)
* {
* //kills svc
* }
* ---
*/
module prt_ctrl. scm;

import win32. windows;
import win32. winsvc;
import std.stdio;
import std.path;
import std.c.string;

// права доступа к службе
const SERVICE_RIGHTS = SERVICE_START | SERVICE_STOP | SERVICE_QUERY_STATUS |
SERVICE_QUERY_CONFIG;
// права доступа к менеджеру служб
const SC_RIGHTS = SC_MANAGER_ALL_ACCESS;

/**
* класс, описывающий системную службу
*/
class Service
{
public:
/**
* конструктор класса
* Params:
* scm = дескриптор менеджера служб
* name = внутреннее имя системной службы
* dw_access = права доступа к системной службе
* Throws:
* "unable to open service" если не удалось получить
* требуемый доступ к службе.
*/
this( SC_HANDLE scm,
char[] name,
DWORD dw_access = SERVICE_RIGHTS)
{
h_service = OpenService( scm, (name~'\0'). ptr, dw_access);
if( !h_service)
throw new Exception( "unable to open service");
}
~this( )
{
if( h_service)
CloseServiceHandle( h_service);
}
/**
* запуск системной службы
* Throws:
* "unable to start service" если запуск не удался;
*/
void
start( )
{
if( !StartService( h_service, 0, null))
throw new Exception( "unable to start service");
}
/**
* останавливает службы
* Throws:
* "unable to stop service", если не удалось дать команду
* для остановки, либо служба не остановилась
* "unable to query service status", если не удалось
* узнать статус службы
* "service stopping is timouted", если служба не смогла
* остановиться за 60 сек.
* "unable to query service config", если не удалось
* узнать конфигурацию службы
*/
void
stop( )
{
SERVICE_STATUS ss;
if( !ControlService( h_service, SERVICE_CONTROL_STOP, &ss))
{
throw new Exception( "unable to stop service");
}
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query service "
"status");
uint wait;
while( ss. dwCurrentState != SERVICE_STOP_PENDING &&
wait < 6000)
{
Sleep( 10);
++wait;
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query "
"service status");
}
if( ss. dwCurrentState != SERVICE_STOP_PENDING)
throw new Exception( "service stopping is time"
"outed");
wait = 0;
while( ss. dwCurrentState != SERVICE_STOPPED &&
wait < 6000)
{
Sleep( 10);
++wait;
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query "
"service status");
}
if( !QueryServiceStatus( h_service, &ss))
throw new Exception( "unable to query service "
"status");
if( ss. dwCurrentState != SERVICE_STOPPED)
throw new Exception( "unable to stop service");
}
/**
* Возвращает имя бинарного файла системной службы
* Returns:
* имя бинарного файла системной службы
* Throws:
* "need to open service first", если доступ к службе
* не получен
* "unable to query service's config", если невозможно
* получить конфигурацию службы
*/
char[]
image( )
{
QUERY_SERVICE_CONFIG * service_conf;
DWORD dw_needed;
char[] buf = new char[ 256];
service_conf = cast(QUERY_SERVICE_CONFIG*)buf.ptr;
if( !h_service)
throw new Exception( "need to open service "
"first");
if( !QueryServiceConfig( h_service, service_conf, 256,
&dw_needed))
throw new Exception( "unable to query service's"
" config ");
return getBaseName( service_conf. lpBinaryPathName[ 0..
strlen(service_conf. lpBinaryPathName)]);
}
private:
/// дескриптор службы
SC_HANDLE h_service;
/// имя службы
//char[] s_name;
}

/**
* класс, описывающий работу с менеджером служб
*/
class Scm
{
public:
/**
* Конструктор класса
* Params:
* s_mach = имя компьютера
* dw_access = права доступа к менеджеру служб
* Throws:
* "unable to open sc", если невозможно получить доступ с
* затребованными правами
*/
this( char[] s_mach = null, DWORD dw_access = SC_RIGHTS)
{
s_machine = s_mach;
if( s_mach != null)
h_sc = OpenSCManager( (s_machine~'\0'). ptr,
null, dw_access);
else
h_sc = OpenSCManager( null, null, dw_access);
if( h_sc == null)
throw new Exception( "unable to open sc");
}
~this( )
{
if( h_sc)
CloseServiceHandle( h_sc);
}
/**
* Создает класс службы и открывает ее
* Params:
* name = внутреннее имя службы
* dw_access = access flags
* Returns:
* указатель на экземпляр класса Service
*/
Service
open_service( char[] name, DWORD dw_access =
SERVICE_RIGHTS)
{
return new Service( h_sc, name, dw_access);
}
private:
/// имя компьютера
char[] s_machine;
/// дескриптор менеджера служб
SC_HANDLE h_sc = null;
}

вот вопрос - комментарии на каком языке предпочитаете писать? Раньше все комментарии оставлял на английском, с замахом на глобальность творения (:, но после того, как начал работать "программистом", заметил, что довольно много людей не знают английского... кто-нить читал каменты к коду на транслите? (: приходилось ... гг

А вобще - стиль склонен меняться с опытом

Что за язык программирования ?

Ссылка на комментарий

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

Ссылка на комментарий
  • 1 месяц спустя...

Свой стиль я называю "скрытный быдло-кодер"... Сначала пишу программу тяп ляп, лишь бы работала (иногда даже без использования циклов, там где это необходимо), потом сокращаю. Это мне вместо блок-схем... :^)))

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...