Показать сообщение отдельно
Старый 14.01.2011, 13:44   #101  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
К сожалению, код пишется разными командами, в разных странах и условиях.
К примеру, команды в Редмонде все больше и больше полагаются на вендоров, теперь уже и при написании кода приложения. При этом уровень code review в таких командах обычно тоже намного ниже, чем хотелось бы.
То есть даже если в FTE там наняты хорошие сотрудники (хотя я уже высказывался по этому поводу в какой-то другой теме - мы не нанимаем людей со знанием АХ), то качество вендоров Вы врядли сможете себе даже представить.

Раз уж дискуссия идет в этой теме, приведу еще пример кода, тоже от вендоров. Код взят с одной из форм в АХ6. Приведу весь код метода, просто чтобы можно было оценить всю мощь гения:

X++:
public void setUnitOfMeasureState()
{
    UnitOfMeasure tblUnitOfMeasure;

    if (ecoResDomain.DataType == AttributeDataType::Integer ||
        ecoResDomain.DataType == AttributeDataType::Decimal)
    {
        // Enable unit of measure group
        if (!unitOfMeasureGroup.enabled())
        {
            unitOfMeasureGroup.enabled(true);
        }

        if (ecoResDomainUnitOfMeasure.RecId &&
            ecoResBoundedDomainValue.RecId)
        {
            // Enable bounded unit of measure combo boxes
            if (!intUnitOfMeasureComboBox.visible())
            {
                intUnitOfMeasureComboBox.visible(true);
            }

            // Populate the integer bounded unit of measure combo box
            intUnitOfMeasureComboBox.clear();
            while select Symbol from tblUnitOfMeasure
                where tblUnitOfMeasure.UnitOfMeasureClass == ecoResDomainUnitOfMeasure.UnitOfMeasureClass
            {
                intUnitOfMeasureComboBox.add(tblUnitOfMeasure.Symbol);
            }
            if (intUnitOfMeasureComboBox.count() > 0)
            {
                intUnitOfMeasureComboBox.selection(0);
            }

            if (ecoResValueLower_EcoResIntValue.RecId &&
                ecoResValueLower_EcoResIntValue.IntUnitOfMeasure)
            {
                // Set the unit of measure selection
                tblUnitOfMeasure = UnitOfMeasure::find(ecoResValueLower_EcoResIntValue.IntUnitOfMeasure);
                intUnitOfMeasureComboBox.selectText(tblUnitOfMeasure.Symbol);
            }
            else if (ecoResDomainUnitOfMeasure.DefaultUnitOfMeasure)
            {
                // Set the unit of measure selection
                tblUnitOfMeasure = UnitOfMeasure::find(ecoResDomainUnitOfMeasure.DefaultUnitOfMeasure);
                intUnitOfMeasureComboBox.selectText(tblUnitOfMeasure.Symbol);

                // Set the unit of measure foreign keys
                if (ecoResValueLower_EcoResIntValue.RecId)
                {
                    ecoResValueLower_EcoResIntValue.IntUnitOfMeasure = tblUnitOfMeasure.RecId;
                }
                if (ecoResValueUpper_EcoResIntValue.RecId)
                {
                    ecoResValueUpper_EcoResIntValue.IntUnitOfMeasure = tblUnitOfMeasure.RecId;
                }
            }
            else if (intUnitOfMeasureComboBox.count() > 0)
            {
                // Set the unit of measure foreign keys
                if (ecoResValueLower_EcoResIntValue.RecId)
                {
                    ecoResValueLower_EcoResIntValue.IntUnitOfMeasure = UnitOfMeasure::findBySymbol(intUnitOfMeasureComboBox.getText(intUnitOfMeasureComboBox.selection())).RecId;
                }
                if (ecoResValueUpper_EcoResIntValue.RecId)
                {
                    ecoResValueUpper_EcoResIntValue.IntUnitOfMeasure = UnitOfMeasure::findBySymbol(intUnitOfMeasureComboBox.getText(intUnitOfMeasureComboBox.selection())).RecId;
                }
            }

            if (!floatUnitOfMeasureComboBox.visible())
            {
                floatUnitOfMeasureComboBox.visible(true);
            }

            // Populate the float unit of measure combo box
            floatUnitOfMeasureComboBox.clear();
            while select Symbol from tblUnitOfMeasure
                where tblUnitOfMeasure.UnitOfMeasureClass == ecoResDomainUnitOfMeasure.UnitOfMeasureClass
            {
                floatUnitOfMeasureComboBox.add(tblUnitOfMeasure.Symbol);
            }
            if (floatUnitOfMeasureComboBox.count() > 0)
            {
                floatUnitOfMeasureComboBox.selection(0);
            }

            if (ecoResValueLower_EcoResFloatValue.RecId &&
                ecoResValueLower_EcoResFloatValue.FloatUnitOfMeasure)
            {
                // Set the unit of measure selection
                tblUnitOfMeasure = UnitOfMeasure::find(ecoResValueLower_EcoResFloatValue.FloatUnitOfMeasure);
                floatUnitOfMeasureComboBox.selectText(tblUnitOfMeasure.Symbol);
            }
            else if (ecoResDomainUnitOfMeasure.DefaultUnitOfMeasure)
            {
                // Set the unit of measure selection
                tblUnitOfMeasure = UnitOfMeasure::find(ecoResDomainUnitOfMeasure.DefaultUnitOfMeasure);
                floatUnitOfMeasureComboBox.selectText(tblUnitOfMeasure.Symbol);

                // Set the unit of measure foreign keys
                if (ecoResValueLower_EcoResFloatValue.RecId)
                {
                    ecoResValueLower_EcoResFloatValue.FloatUnitOfMeasure = tblUnitOfMeasure.RecId;
                }
                if (ecoResValueUpper_EcoResFloatValue.RecId)
                {
                    ecoResValueUpper_EcoResFloatValue.FloatUnitOfMeasure = tblUnitOfMeasure.RecId;
                }
            }
            else if (floatUnitOfMeasureComboBox.count() > 0)
            {
                // Set the unit of measure foreign keys
                if (ecoResValueLower_EcoResFloatValue.RecId)
                {
                    ecoResValueLower_EcoResFloatValue.FloatUnitOfMeasure = UnitOfMeasure::findBySymbol(floatUnitOfMeasureComboBox.getText(floatUnitOfMeasureComboBox.selection())).RecId;
                }
                if (ecoResValueUpper_EcoResIntValue.RecId)
                {
                    ecoResValueUpper_EcoResFloatValue.FloatUnitOfMeasure = UnitOfMeasure::findBySymbol(floatUnitOfMeasureComboBox.getText(floatUnitOfMeasureComboBox.selection())).RecId;
                }
            }
        }
        else
        {
            // Disable unit of measure combo boxes
            if (intUnitOfMeasureComboBox.visible())
            {
                intUnitOfMeasureComboBox.visible(false);
            }

            if (floatUnitOfMeasureComboBox.visible())
            {
                floatUnitOfMeasureComboBox.visible(false);
            }
        }
    }
    else
    {
        // Disable unit of measure group
        if (unitOfMeasureGroup.enabled())
        {
            unitOfMeasureGroup.enabled(false);
        }

        // Disable unit of measure combo boxes
        if (intUnitOfMeasureComboBox.visible())
        {
            intUnitOfMeasureComboBox.visible(false);
        }

        if (floatUnitOfMeasureComboBox.visible())
        {
            floatUnitOfMeasureComboBox.visible(false);
        }
    }
}
Если мне кто-то объяснит, что делает этот метод, дам +