Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка программ, Интерфейс и функциональность 
:(
    Опции темы
Lazin
Дата 4.12.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Леопольд @  4.12.2009,  13:26 Найти цитируемый пост)
Как правило, всё продумать нельзя и на этапе реализации могут появиться новые требования. Некоторые могут быть не совместимы с текущей системой. Как быть, перепроектировать почти с ноля или делать как попало? 
тут все не так печально, как кажется, обычно бывает понятно, какие требования могут быть изменены заказчиком в последствии, по крайней мере там где я работаю, это так
просто закладываем в архитектуру "точки роста", в нужных местах
в любом случае, это всегда баланс между гибкостью и сложностью
PM MAIL Skype GTalk   Вверх
unicuum
  Дата 4.12.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(Lazin @  4.12.2009,  14:39 Найти цитируемый пост)
в любом случае, это всегда баланс между гибкостью и сложностью 

Вот, к примеру, реализация кода шаблона проектирования Property Container.
Код

#include <iostream>

template <typename T> class property {
        T value;
    public:
        T & operator = (const T &i) {
            ::std::cout << i << ::std::endl;
            return value = i;
        }
        // This template class member function template serves the purpose to make
        // typing more strict. Assignment to this is only possible with exact identical
        // types.
        template <typename T2> T2 & operator = (const T2 &i) {
            ::std::cout << "T2: " << i << ::std::endl;
            T2 &guard = value;
            throw guard; // Never reached.
        }
        operator T const & () const {
            return value;
        }
};

struct Foo {
    // Properties using unnamed classes.
    class {
            int value;
        public:
            int & operator = (const int &i) { return value = i; }
            operator int () const { return value; }
    } alpha;

    class {
            float value;
        public:
            float & operator = (const float &f) { return value = f; }
            operator float () const { return value; }
    } bravo;
};

struct Bar {
    // Using the property<>-template.
    property <bool> alpha;
    property <unsigned int> bravo;
};

int main () {
    Foo foo;
    foo.alpha = 5;
    foo.bravo = 5.132f;

    Bar bar;
    bar.alpha = true;
    //bar.bravo = true; // This line will yield a compile time error
                      // due to the guard template member function.
    ::std::cout << foo.alpha << ", "
                << foo.bravo << ", "
                << bar.alpha << ", "
                << bar.bravo
                << ::std::endl;
}

Могли бы просто написать функции получить и установить. Но нет, использовали шаблоны C++. Если развивать эту мусль, так можно и индексаторы в свойствах реализовать. Однако вопрос в другом, целесообразно ли? Как определить, что мы перегнули со сложностью?  smile 


--------------------
user posted image
обычный день на винграде
PM   Вверх
kemiisto
Дата 4.12.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(Alek86 @  4.12.2009,  13:39 Найти цитируемый пост)
kemiisto, вроде Комодератор, а ведешь себя как типичный тролль

В этой ветке по-другому получается редко. smile 

Цитата(Alek86 @  4.12.2009,  13:39 Найти цитируемый пост)
По поводу проектирования интерфейсов есть неплохая книжка Алана Купера "Психбольница в руках пациентов"

Стоит читать?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Alek86
Дата 4.12.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(kemiisto @  4.12.2009,  15:28 Найти цитируемый пост)
Стоит читать?

это так, художественная литература
читать можно, когда думать лень


--------------------
user posted image    user posted image
PM MAIL   Вверх
Lazin
Дата 4.12.2009, 15:32 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(unicuum @  4.12.2009,  15:02 Найти цитируемый пост)
Могли бы просто написать функции получить и установить. Но нет, использовали шаблоны C++. 

по моему это ерунда какая-то, шаблон property - бесполезен, так как он не позволяет задать свои get/set методы для свойства, поэтому смысла я в нем не вижу, а второй вариант - довольно утомителен, в каждом новом классе писать одно и то-же?
я бы сделал что-то вроде:
Код

template
    < T (Foo::*Get) ()
    , void (Foo::*Set) (T const&) >
class Property
{
    Foo& owner_;
public:
    Property(Foo& o) : owner_(o) {}
    
    opertor T()
    {
        return (owner_.*Get)();
    }

    Property& operator = (T const& value)
    {
        (owner_.*Set)(value);
    }
};


что-бы можно было использовать так:
Код

class Foo{
...
Property<&Foo::get, &Foo::set> myValue;
Foo()
  : myValue(this)
{
}
int get()
{
    return 42;
}

void set(int a)
{
}
...
}
foo.myValue = ...; // вызов set

код скорее всего не рабочий, это просто иллюстрация идеи )
Цитата(unicuum @  4.12.2009,  15:02 Найти цитируемый пост)
Как определить, что мы перегнули со сложностью?

с помощью здравого смысла и такой-то матери smile 

Это сообщение отредактировал(а) Lazin - 4.12.2009, 15:34
PM MAIL Skype GTalk   Вверх
EvilsInterrupt
Дата 4.12.2009, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 2
Всего: 9



Буду судить своей практики.

Проектированием могу заниматься только тогда, когда на это есть время! В рабочем режиме, как правило требуют результат "Димон, уже вчера надо было! У клиентов малвара бабло ворует, а ты тут думаешь!!!".

Одним словом встает ряд вопросов :
1) "Для кого пишется программа ?" 
2) "В каких условиях будет работать программа и всегда ли она будет работать только в этих условиях ?"
3) "Как быстро нужно эту программу написать ?"
4) "Что является самым главным в программе, что принесет заказчику бабло\экономии времени\качество хранения данных ?"
5) И самый главный вопрос, когда принято решение "ПИСАТЬ программу!" , это "Что будет если моя программа откажет ?", т.е. зная каковы последствия будут ожидать нас, мы будем знать как правильно завершится, т.е. что нужно сделать СТОПУДОВО !!!

Как правило клиент заказывает видя для себя мистические выгоды, что будут храниться документы, что программа ему всегда напомнит обо всем. Но он забывает что он может ноутбук\комп выключить или забыть включить! Или же админ почистил комп и с нес с автозагрузки и она у него пропала! Условий работы масса!!!

Первый и главный вопрос, считаю п.1. Потому что если клиент не знает какую выгоду принесет прога, то он будет тебе парить мозг!!! А если он скажет "Знаю что компы посчитают эту хрень за 1 час, а я бы считал за 2 дня" или "Пока эти документы подготовлю, у меня уже пенни по ...., вот если ваша прога в нужный день за эн дней до срока сделает, то.... 
Только зная с кем рабоешь ты будешь четко знать - будет ли он хавать тебе мозг ? Сделанная четко по целям клиента прога дает тебе ФАНАТОВ , а это твои бабки!!!
PM MAIL WWW ICQ Jabber   Вверх
nerezus
Дата 4.12.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Цитата

Проектированием могу заниматься только тогда, когда на это есть время! 
 А когда нет времени - то проектированию надо уделить гораздо больше времени, чем когда оно есть ;)
К сожалению ихз реальной жизни.

Естественно никто не будет ничего проектировать для продукта <$1k, но мелкие продукты без посл. доработки и не требовательны к проектированию.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Lazin
Дата 4.12.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(EvilsInterrupt @  4.12.2009,  22:30 Найти цитируемый пост)
Проектированием могу заниматься только тогда, когда на это есть время! В рабочем режиме, как правило требуют результат

фишка в том, что без анализа требований непонятно когда программу можно считать законченой smile 
обычно, программист видит недостатки своих программ и стремиться сделать "лучше", но клиент это не всегда может оценить, а требования позволяют четко, дерзко, определить, что именно должно быть сделано хорошо, а на чем можно не заморачиваться и когда собственно нужно остановиться smile 
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.