Создаете ли вы блок схему перед написанием советника или индикатора? - страница 2

 
Без блок схемы ни как , если только посчитать 2+2 .
 

Если писать аккуратно в процедурном стиле, то блок схема программы выстроится из функций по ходу дела, а если использовать ООП то да, без схемы невозможно и эта схема читабельна только самому программисту и больше никому если не сделано подробное объяснение структуры классов...

 
Andrei:

Если писать аккуратно в процедурном стиле, то блок схема программы выстроится из функций по ходу дела, а если использовать ООП то да, без схемы невозможно и эта схема читабельна только самому программисту и больше никому если не сделано подробное объяснение структуры классов...

Ну что бы писать аккуратно надо все моменты проработать, блок схема как раз помогает это сделать.

 
Andrei:

Если писать аккуратно в процедурном стиле, то блок схема программы выстроится из функций по ходу дела, а если использовать ООП то да, без схемы невозможно и эта схема читабельна только самому программисту и больше никому если не сделано подробное объяснение структуры классов...

Блок-схема программы выстраивается совершенно одинаково, хоть в процедурном, хоть в ООП-стиле.

И насчет "нечитабельности" ты не прав - я уже не раз приводил свои интерфейсы. Тебе что там, что-то непонятно и нечитабельно ?

 
Sergey Vradiy:
Вообще не представляю, как можно заниматься написанием программы, не составив предварительно блок-схему. Меня к этому приучили ещё в 80-е годы. 

Делается в голове. Вон Торвальд Линукс в голове компилирует, и быстрее облака сервером

 

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

P.S. Да и склероза пока нет - могу помнить что куда и зачем.

 
Georgiy Merts:

И насчет "нечитабельности" ты не прав - я уже не раз приводил свои интерфейсы. Тебе что там, что-то непонятно и нечитабельно ?

Без пол литра не разобрать. ))

 
Andrei:

Без пол литра не разобрать. ))

И зачем тебе поллитра ?

Что именно тебе непонятно, скажем в этом интерфейсе компоненты торговой позиции (TPC):

class CTradePosComponentI: public CMyObject
{
public:
   void CTradePosComponentI() {    SetMyObjectType(MOT_TRADEPOS_COMPONENT_I); };
   virtual void ~CTradePosComponentI() {};
   
   // Основной интерфейс
   virtual long               GetTPCTicket()       const = 0;
   virtual long               GetTPCMagic()        const = 0;
   virtual ECurrencySymbol    GetTPCSymbol()       const = 0;
   virtual ENUM_POSITION_TYPE GetTPCType()         const = 0;
   virtual datetime           GetTPCOpenTime()     const = 0;
   virtual double             GetTPCVolume()       const = 0;
   virtual double             GetTPCOpenPrice()    const = 0;
   virtual double             GetTPCStopLoss()     const = 0;
   virtual double             GetTPCTakeProfit()   const = 0;
   virtual string             GetTPCCommentary()   const = 0;
   
   // NOTE !!! Функция IsTPCInUnloss может работать неверно из-за ошибок округления.
   // Для надежности безубыток надо ставить на пункт больше, чем dUnlossPriceDistance
   virtual bool               IsTPCInUnloss(double dUnlossPriceDistance = 0) const { if(GetTPCStopLoss() <= 0 || GetTPCStopLoss() == EMPTY_VALUE || dUnlossPriceDistance == EMPTY_VALUE) return(false); if(GetTPCType() == POSITION_TYPE_BUY) { if(GetTPCStopLoss() >= GetTPCOpenPrice() + dUnlossPriceDistance) return(true); } else { if(GetTPCStopLoss() <= GetTPCOpenPrice()- dUnlossPriceDistance) return(true); }; return (false); };
   virtual double             GetTPDistance() const { if(GetTPCTakeProfit() == 0 || GetTPCTakeProfit() == EMPTY_VALUE) return(EMPTY_VALUE); if(GetTPCType() == POSITION_TYPE_BUY) return(GetTPCTakeProfit() - GetTPCOpenPrice()); return(GetTPCOpenPrice() - GetTPCTakeProfit());  };
   virtual double             GetSLDistance() const { if(GetTPCStopLoss() == 0 || GetTPCStopLoss() == EMPTY_VALUE) return(EMPTY_VALUE); if(GetTPCType() == POSITION_TYPE_BUY) return(GetTPCOpenPrice()- GetTPCStopLoss()); return(GetTPCStopLoss() - GetTPCOpenPrice());  };
   
   // Функция отправляет в предоставленную ини-секцию информацию по компоненте позиции.
   virtual bool               SendToINI(CINISectionI* pisSection,bool bClearBeforeSend = true) = 0;   
};
 
Georgiy Merts:

Что именно тебе непонятно, скажем в этом интерфейсе:

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