суббота, 16 июня 2012 г.

Shitty Code Spagetti Говнокод

Набрел тут на кошмарный код. Проверил по Code Metrics (есть такая вкусность в Visual Studio), индекс поддержки - желтый, значение 14 (должен быть как минимум 20, а лучше - стремиться к 100). Цикломатическая сложность кода (зависит от вложенности условных операторов и циклов) - 58, должна быть не более 15.

Весь код привожу под катом.

Добавим в кнопку SaveButton и событие OnSaving

Что если нам перед сохранением данных формы требуется выполнить кое-какие вычисления? Первый способ - можно добавить в форму CustomValidator, который всегда возвращает true, но перед этим выполняет все необходимые вычисления. Второй способ - сделать событие к кнопке SaveButton. Вот код:
namespace Compsphere.SharePoint.WebControls
{

    public class SaveButtonWithEvents : SaveButton
    {

        public CancelEventHandler Saving;

        protected virtual void OnSaving(CancelEventArgs e)
        {
            if (Saving != null)
            {
                Saving(this, e);
            }
        }

        protected override bool SaveItem()
        {
            CancelEventArgs e = new CancelEventArgs(false);
            OnSaving(e);
            if (e.Cancel) return true;

            return base.SaveItem();
        }
    }
}

p.s. Добавьте в начало: using Microsoft.SharePoint.WebControls; using System.ComponentModel;