size_t
является неподписанным типом. Таким образом, он не может представлять никаких отрицательных значений (& lt; 0). Вы используете его, когда считаете что-то, и уверены, что он не может быть отрицательным. Например, strlen()
возвращает size_t
, поскольку длина строки должна быть не менее 0.
В вашем примере, если ваш индекс цикла будет всегда больше 0, может иметь смысл использовать size_t
или любой другой неподписанный тип данных.
Когда вы используете объект size_t
, вы должны убедиться, что во всех контекстах это используется, включая арифметику, вы хотите неотрицательные значения. Например, предположим, что у вас есть:
size_t s1 = strlen(str1);
size_t s2 = strlen(str2);
, и вы хотите найти разницу в длинах str2
и str1
. Вы не можете делать:
int diff = s2 - s1; /* bad */
Это связано с тем, что значение, назначенное diff
, всегда будет положительным числом, даже когда s2 < s1
, потому что вычисление выполняется с неподписанными типами. В этом случае, в зависимости от вашего варианта использования, вам может быть лучше использовать int
(или long long
) для s1
и s2
.
В C / POSIX, который мог / должен использовать size_t
, но не из-за исторических причин. Например, второй параметр fgets
в идеале должен быть size_t
, но есть int
.
Этот недавний вопрос может обратиться к Вашим проблемам: Как шаблон MVC отличается, если вообще, от DAL / шаблон разработки BLL?
Требуется немного больше опыта, дисциплины и работы для разработки веб-приложения MVP ASP.NET так, чтобы автоматизация тестирования поддержки приложений. Когда можно хлопнуть усовершенствованный GridView на страницу наряду с SqlDataSource и связать его непосредственно с хранимой процедурой, Вы бросаете свою автоматизацию тестирования из окна.
Много приложений MVP записано с помощью сторонних инструментариев, которые инкапсулируют большую codebehind логику. Это имеет тенденцию пачкать Ваше чистое разделение обязанностей в дизайне MVP.
Зато я могу записать веб-приложение ASP.NET с богатым UI с помощью стороннего инструментария в 10-е из времени, в котором я могу с MVC, он - текущее состояние. Для простого административного средства это точно, что я сделал бы сегодня. Для крупного масштаба n-tier приложение я склонился бы к MVC.