C и компиляторы C++ генерирует предупреждение при сравнении подписанных и неподписанных типов; в Вашем примере кода Вы не могли сделать свою переменную цикла неподписанной и иметь компилятор, генерируют код без предупреждений (принимающий, сказал, что предупреждения были включены).
Естественно, Вы компилируете с предупреждениями, превращенными полностью, правильно?
И, Вы полагали, что компиляция с "предупреждениями обработки как ошибки" берет его что один шаг вперед?
оборотная сторона с использованием чисел со знаком - то, что существует искушение перегрузить их так, чтобы, например, значения 0-> n были выбором пункта меню и-1 средством, которые ничто не выбрало - вместо того, чтобы создать класс, который имеет две переменные, один, чтобы указать, выбрано ли что-то и другой для хранения, каков тот выбор. Перед знанием этого Вы тестируете на отрицательный повсеместно, и компилятор жалуется на то, как Вы желаете сравнить выбор пункта меню с количеством выборов пункта меню, которые Вы имеете - но это опасно, потому что они - различные типы. Не делайте этого.
Принцип единой ответственности (SRP) - дать каждому классу только одну причину менять; и «Причина изменения» == "обязанность". Например: счет-фактура класс не несет ответственности печатать себя
Разделение проблем (с 1974 г.). Обеспокоенность == особенность системы. Принимая заботиться о каждой из забот: о каждой одна проблема, другие проблемы не имеет значения. Скрытие реализации поведение.
Из здесь .
Разделение проблем и принцип единой ответственности (SoC vs SRP)
Из статьи по ссылке:
Разделение проблем (SoC) - это процесс взлома компьютера программа в отдельные функции, которые как можно меньше пересекаются по функциональности. Обеспокоенность - это любая составляющая интереса или направленность программы. Как правило, проблемы являются синонимами функций или поведения. http://en.wikipedia.org/wiki/Separation_of_concerns
Принцип единой ответственности (SRP) - каждый объект должен нести единственную ответственность, и все его услуги должны строго соответствовать этой ответственности. На определенном уровне Сплоченность рассматривается как синоним SRP. http://en.wikipedia.org/wiki/Single_responsibility_principle
Единая ответственность устанавливает, что объект отвечает за единственную единицу работы.
Разделение проблем гласит, что приложения должны быть разделены на модули, функции которых перекрываются как можно меньше.
] Похожие конечные результаты ... немного разные приложения.
На мой взгляд, принцип единой ответственности - один из инструментов / идиом для достижения разделения проблем.
Разделение проблем - это процесс; Принцип единой ответственности - это философия дизайна / архитектуры. Они не полностью разделены, но служат разным целям.