Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

По вашему это нормально?

255
21 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
Вообщем процитирую фразу тим лида:
"Самый часто переписуемый модуль в нашей программе - логгер". Я прифигел, особенно учитывая то, что функция записи в лог-файл стала принимать не 3 параметра, а 8.
Вообщем, что-бы далеко не ходить - хедер в студию:
Код:
//---------------------------------------------------------------------------

#ifndef LogWinH
#define LogWinH
//---------------------------------------------------------------------------
#include <windows.h>
#include "Constants_Application.h"
//---------------------------------------------------------------------------

class TLogWin
//---------------------------------------------------------------------------------------------------------
{
  public:
    TLogWin(char* pFileName, CRITICAL_SECTION* pcs, lotLogOperationType plot);
    ~TLogWin();

  protected:
    char*  FFileName;
    CRITICAL_SECTION* Fcs;
    bool FIsCSExternal;
    lotLogOperationType Flot;

  public:
    void SetLOT(lotLogOperationType plot);

  protected:
    void WriteLog(char* pFileName, const char* pLogMessage, bool pTime, bool pThreadId, bool pEOL, bool pAppend, bool pCut, lotLogOperationType plot);

  public:
    void EnterCS();
    void LeaveCS();
    void WriteOneLog(char* pFileName, const char* pLogMessage, bool pTime, bool pThreadId, bool pEOL, bool pAppend, bool pCut, lotLogOperationType plot);
    void WriteManyLog(char* pFileName, const char* pLogMessage, bool pTime, bool pThreadId, bool pEOL, bool pAppend, bool pCut, lotLogOperationType plot);
};

void WriteLogExternal(char* pFileName, const char* pLogMessage, CRITICAL_SECTION* pcs, bool pAppend, lotLogOperationType plot_base, lotLogOperationType plot_line);

#endif

З.Ы. Я, кстати, пишу рассказик, об организации работы в нашем офисе(ну, типа как не надо делать), когда закончу - смогу выложить на потеху людям. просто иногда до дибилизма такого уровня я даже не знаю, как можна было додуматься..
14
21 августа 2008 года
Phodopus
3.3K / / 19.06.2008
Скажи ему пусть пользуется Event-ами, со стандартными EventLog-ами (ну те которые ReportEvent() функцией пишутся). Хотя как вы все вызовы WriteLog переписывать будете?.. Может лучше и оставить как есть :).
для кучи boolean-ов можно было ввести одну переменную флагов. Ну, я бы ввел..
255
21 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
Просто, как по мне, то это дико - переписывать базовые инструменты программы по 10 раз. Я думаю, что единственная функция логгера - писать в лог, и его поведение, если нужно должно настраиваться при создании логгера, а не должно указываться при каждой записи. Изменение во всем коде - только тормзят проект, а учитывая то, что они сделаны только для trunc, а для бренчей их должен делать еще кто-то другой.. К тому-же, я думаю, что код не должен становиться промежуточным кодом между двумя вызовами логгера..
11
21 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
а нельзя было сразу предугадать что параметров лога может быть сколько угодно? и в качестве параметров пишущей ф-ции передавать что типа stl - контейнера.
ЗЫ: а косяк в этом как раз руководителя, он не предусмотрел и не продумал ТЗ
14
21 августа 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: Dart Bobr
дико - переписывать базовые инструменты программы по 10 раз.
единственная функция логгера - писать в лог, и его поведение, если нужно должно настраиваться при создании логгера
Изменение во всем коде - только тормзят проект



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

Будет очень интересно почитать твой рассказ, так сказать, от первого лица.

341
22 августа 2008 года
Der Meister
874 / / 21.12.2007
[QUOTE=Dart Bobr]Вообщем процитирую фразу тим лида:
"Самый часто переписуемый модуль в нашей программе - логгер". Я прифигел, особенно учитывая то, что функция записи в лог-файл стала принимать не 3 параметра, а 8.[/QUOTE]Дык методы можно ж перегружать, а классы - наследовать...
Ну, типа, чтобы метод с тремя параметрами вызывал метод, где их восемь.
[QUOTE=Phodopus]Я так подозраваю функция еще каждый раз файл открывает заново.. вот этого я б не вынес - лог все-таки должен быть в одном файле, а значит имя лога и не нужно (нужно только при старте программы)[/QUOTE]Вот и отнаследовать класс для того, чтобы каждый подвид логгера работал так, как ему надо (если отводится по логфайлу на каждую категорию событий) и, соответственно, под каждый из них задать конфигурацию для упрощённого вызова методов Write..Log() + какой файл открывать. Если такой вариант не устраивает, можно ввести внешнюю, по отношению к классу, функцию конфигурирования - так гибче (скажем, введя суперкласс - менеджер всей этой фигни). Тогда процесс мог бы стать безболезненным (хотя, конечно, всё зависит от способа использования экземпляров класса в коде).
А ещё можно ввести набор специализированных функций вроде ReportEvent(), ReportException(), ReportError()... Ну и в таком ракурсе.
255
22 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
Не, народ, я не спрашивал, кто как бы сделал. И про то, что старый интерфейс работы с классом, надо было сохранить, я дискутировал с тем, кто сотворил сие безобразие, и про параметры по дефолту и т. д. Просто мне любопытна оценка способностей проектирования и программирования, которые присутствуют у субьекта, о котором я написал. :)
11
22 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
могу сказать в его оправдание, что возможно заказчик не совсем адекватен... типа сказал пиши мне в логи только дату, а потом подумал и еще кучу пунктов добавил.
ЗЫ: в строительстве такое весьма часто бывает... дом построят, а потом попросят подземную стоянку еще сделать :)
14
22 августа 2008 года
Phodopus
3.3K / / 19.06.2008
Ну вот мы и говорим что сделали бы по-другому, потому что это ненормально :)
А заказчики это да, те еще звери..
63
22 августа 2008 года
Zorkus
2.6K / / 04.11.2006
А для такой распространенной задачи нету готовой мощной библиотеки для C++? Которая бы покрыла по крайней мере на 90% ваши потребности в логировании, и 10% если бы понадобилось, вы бы уже легко реализовали во враппере?
Например -- в Java есть для этого библиотека Log4J, в той ее версии которую мы использовали нам не хватило только одной фичи -- уровня лога, при котором выводятся в лог все запросы к базе данных с уже подставленными в них параметами (т.е. в таком, в каком они уже непосредственно исполняются сервером СУБД). Вот это и было во враппере, а остальное есть готовое.
255
22 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
Так вот о том и речь, что:
1. заказчику глубоко плевать на наш логгер, ему главное, чтоб все остальное работало, а логгер, больше для нас необходим.
2. для этой задачи, я уверен, есть готовые решения, но по всей видимости преследовалась цель изобретения велосипеда, причем явно не с двумя колесами..
3. Мне кажется, что несмотря на все вышенаписаное основные проблемы:
- ненужное усложнение инструмента
- убивание старого интерфейса класса, и правка нескольких сотен мест кода, убивая старый логгер и вставляя новый.
Я вообще думаю, что если нужен логгер для всего проэкта, то он, как и все остальные части проэкта должен иметь тех. документацию и четкий интерфейс. Или я не прав?
63
22 августа 2008 года
Zorkus
2.6K / / 04.11.2006
Конечно. Трудно придумать мне более общий и широко используемый в системе модуль!
341
23 августа 2008 года
Der Meister
874 / / 21.12.2007
Короч, кидай ссылку на топик своему тимлиду
63
23 августа 2008 года
Zorkus
2.6K / / 04.11.2006
Давайте что ли поможем хорошему человеку :D
Написать коллективное обращение к глубокоуважаемому тимлиду Бобра, подписать его массово и отправить ему.
Вот представьте только -- сидит этот тимлид на работе, и вдруг ему приходит письмо с критикой архитектуры его логгера, и под ним подписи нескольких сотен человек...
255
23 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
:D
Та, мне уже все-равно на реакцию тим-лида. Я все-равно уже скоро там не буду работать :) Просто мне было любопытно: или только я работая в фирме научился тому, как не надо делать, вместо того как надо, или это более распространенное явление. Похоже, что это только мне так везет :)
255
24 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
Вот, дописал бету своего опуса о работе в конторе. Кому интересно - можете читать :)
240
24 августа 2008 года
aks
2.5K / / 14.07.2006
Цитата: Zorkus
А для такой распространенной задачи нету готовой мощной библиотеки для C++?


Порты log4j есть на кучу языков. В том числе и для C++. Функциональность, конфиги, все примерно тоже.
А точ что приведенно в первом посте - просто убийство, а не логгер. )

341
24 августа 2008 года
Der Meister
874 / / 21.12.2007
Мля, вы чё, в школе работаете? По-моему, компания, с таким подходом, может существовать, только если у неё есть 98% налоговые льготы или она постоянно субсидируется государством...
255
24 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
Цитата: Der Meister
Мля, вы чё, в школе работаете? По-моему, компания, с таким подходом, может существовать, только если у неё есть 98% налоговые льготы или она постоянно субсидируется государством...



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

9
24 августа 2008 года
Lerkin
3.0K / / 25.03.2003
Цитата: Dart Bobr
Вот, дописал бету своего опуса о работе в конторе. Кому интересно - можете читать :)


Плюс пятак. Пеши изчо. ;)

341
24 августа 2008 года
Der Meister
874 / / 21.12.2007
У нас, кстати, тоже такая есть. Пишет софт под мобильные устройства. Чё за софт - сказать не могу, но скажу другое: у меня друг там работал, так вот никто (даже его шеф) не мог сказать, зачем и кому тот софт вообще потребен и какова хоть примерная перспектива его использования. Для полного щастья, компания ещё и придерживается не менее суицидального курса. Надо сказать, что это - представительство московской фирмы (название не вспомню), имеющей хорошие связи с иностранными компаниями, работающими в аналогичной индустрии, а зарплаты лежат в диапазоне килобакса до двух. Звучит неплохо. Когда друган там работал, филиал состоял из шефа (серьёзный, кстати, дядька - бывший властелин дальневосточной МТС), секретарши, охранника и двух (!!!) программистов (которые, по идее, работают под непосредственным руководством столичных мудрецов). Теперь друг уволился. Страшно думать, кто там работает теперь...
9
25 августа 2008 года
Lerkin
3.0K / / 25.03.2003
Всегда удивлялся (а теперь особенно) - откуда деньги в таких компашках берутся? Мож отмывает кто? Нетрудовые миллионы... :rolleyes:
341
25 августа 2008 года
Der Meister
874 / / 21.12.2007
Так вот и я про то же :)
240
25 августа 2008 года
aks
2.5K / / 14.07.2006
Цитата: Dart Bobr
Вот, дописал бету своего опуса о работе в конторе. Кому интересно - можете читать :)



Мясцо. Я бы столько не выдержал. )

11
25 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата:
[FONT=Calibri]Решение №4. Сторожевой пёс. [/FONT]

Убило нах.... :D
читаю дальше...

6
25 августа 2008 года
George
4.1K / / 05.01.2007
Dart Bobr, я бы на твоём месте собрал бы манатки и крутанул бы оттуда педали :)
11
25 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Washington
Dart Bobr, я бы на твоём месте собрал бы манатки и крутанул бы оттуда педали :)


как раз в таком гадюшнике и вырастают профи
а будешь в тепличных условиях сидеть - никогда не узнаешь что такое баги и как их править :)

14
25 августа 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: Dart Bobr
или только я работая в фирме научился тому, как не надо делать, вместо того как надо, или это более распространенное явление



Более распространенное :)

42K
26 августа 2008 года
sp00n
1 / / 25.08.2008
компания будет существовать еще долго, ибо шеф чувствует где тут Гольфстрим)
все же Dart Bobr видел не только как не писать, а также, как надо писать чтоб из кучи дерьма все-таки родить самоцвет? или я не прав? :)
3
26 августа 2008 года
Green
4.8K / / 20.01.2000
А казачек то засланный?
63
26 августа 2008 года
Zorkus
2.6K / / 04.11.2006
:D
Может того, сразу подсеть забанить, откуда он написал?
А то еще начнут тут щас доказывать, что представленный логгер -- это образец архитектуры:D
341
27 августа 2008 года
Der Meister
874 / / 21.12.2007
[QUOTE=Green]А казачек то засланный?[/QUOTE]Я тоже подумал, что это тимлида Dart Bobra :D
9
27 августа 2008 года
Lerkin
3.0K / / 25.03.2003
Цитата: sp00n
...как надо писать чтоб из кучи дерьма все-таки родить самоцвет?


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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог