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

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


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

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: Дамбаев Алесандр, theice@inbox.ru
* Copyrights: Дамбаев Александр, theice@inbox.ru
* 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 месяц спустя...
Опубликовано

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

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



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

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