Linq и ObservableCollection

Через несколько лет, что я практиковал Разработку через тестирование, я должен был бы сказать, что самые большие оборотные стороны:

Продажа его к управлению

TDD лучше всего сделан в парах. Для одного трудно сопротивляться желанию просто записать реализацию, когда Вы ЗНАЕТЕ , как записать если/еще оператор. Но пара сохранит Вас на задаче, потому что Вы сохраняете его на задаче. К сожалению, многие компании/менеджеры не думают, что это - хорошее использование ресурсов. Почему плата за двух человек для записи одной функции, когда у меня есть две функции, которые должны быть сделаны одновременно?

Продажа его другим разработчикам

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

Поддержание тестового кода наряду с Вашим производственным кодом

Идеально, Ваши тесты только повредятся, когда Вы примете плохое решение кода. Таким образом, Вы думали, что система проложила себе путь, и оказывается, что это не сделало. Путем повреждения теста или (маленького) набора тестов, это - на самом деле хорошие новости. Вы знаете точно , как Ваш новый код будет влиять на систему. Однако, если Ваши тесты плохо записаны, сильно связанные или, хуже уже, сгенерированные ( кашель Тест VS), то поддержание Ваших тестов может стать хором быстро. И, после того, как достаточно тестов начинает вызывать больше работы, что воспринятая стоимость, которую они создают, тогда тесты, будет первой вещью, которая будет удалена, когда расписания станут сжатыми (например, это добирается для уплотнения времени)

тесты Записи так, чтобы Вы покрыли все (100%-е покрытие кода)

Идеально, снова, если Вы будете придерживаться методологии, Ваш код составит 100%, протестированных по умолчанию. Как правило, мысль, я заканчиваю с покрытием кода вверх 90%. Это обычно происходит, когда у меня есть некоторая архитектура стиля шаблонов, и основа тестируется, и я пытаюсь сократить углы и не протестировать индивидуальные настройки шаблонов. Кроме того, я нашел, что, когда я встречаюсь с новым барьером, я ранее не встретился, у меня есть кривая обучения в тестировании его. Я признаюсь, что писал некоторые строки кода старый skool путь, но мне действительно нравится иметь это 100%. (Я предполагаю, что был по успевающему ученику в школе, er skool).

Однако, с которым я сказал бы, что преимущества TDD далеко перевешивают отрицательные стороны для простой идеи, что, если можно достигнуть хорошего набора тестов, которые покрывают приложение, но не так хрупки, что одно изменение повреждает их всех, Вы будете в состоянии продолжать добавлять новые опции в день 300 из Вашего проекта, как Вы сделали в день 1. Этого не происходят со всеми те, кто пробует TDD, думая, что это - чудодейственное средство ко всему их находящемуся во власти ошибкой коду, и таким образом, они думают, что это не может работать, период.

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

TDD является жесткой дисциплиной ведущему устройству, и я был в нем в течение нескольких лет, и я все еще изучаю новые методы тестирования все время. Это - огромные инвестиции времени впереди, но за длительный срок Ваша устойчивость будет намного больше, чем если бы у Вас не было автоматизированных модульных тестов. Теперь, если только мои боссы могли бы понять это.

1
задан 18 June 2009 в 15:55
поделиться

1 ответ

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

ObservableCollection должен быть только для WPF, чтобы иметь что-то для привязки - это очень полезно, если вы хотите добавить новый элемент коллекции, но не помещать его в базу данных до того, как пользователь сможет его отредактировать.

например.

// Create a new blank client type
var ct = new ClientType()
{
    IsArchived = false,
    Description = "<new client type>",
    Code = "CT000",
    CanLoginOnline = true
};

// Tell the data source to keep track of this object
db.ClientTypes.InsertOnSubmit(ct);

// Also add the object to the observable collection so that it can immediately be shown in the UI and editted without hitting the db
clienttypes.Add(ct);
2
ответ дан 3 September 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: