Как дизайнер, мне нравится предоставлять интерфейсы, которые обеспечивают баланс мощности и простоты. Например, я думаю, что разработчики LINQ следовали этому принципу, потому что они предлагали как точечную нотацию, так и нотацию запроса. Первый более мощный, но второй легче читать и следовать. Если вы не согласны с моей оценкой LINQ, пожалуйста, все равно попытайтесь понять мою точку зрения; LINQ был просто примером, мой пост не о LINQ.
Я называю этот принцип "наборной мощностью". Но я хотел бы знать, как это называют другие люди. Конечно, некоторые скажут, что «ПОЦЕЛУЙ» является общим термином. Но я вижу KISS как надмножество или практику "потребления". Снова используя LINQ в качестве моего примера, на мой взгляд, команда программистов, которые всегда пытаются использовать нотацию запросов над точечной нотацией, практикуют KISS. Таким образом, разработчики LINQ практиковали «коммутируемую мощность», тогда как потребители LINQ практикуют KISS. Они вместе создают прекрасную музыку.
edit Я приведу другой пример. Представьте себе средство ведения журналов, которое имеет две подписи, допускающие два использования:
void Write(string message);
void Write(Func<string> messageCallback);
Целью двух подписей является удовлетворение следующих потребностей:
//Every-day "simple" usage, nothing special.
myLogger.Write("Something Happened" + error.ToString() );
//This is performance critical, do not call ToString() if logging is
//disabled.
myLogger.Write( () => { "Something Happened" + error.ToString() });
Наличие этих перегрузок представляет собой «коммутируемую мощность», потому что у потребителя есть выбор простого интерфейса или мощного интерфейса. Любящий KISS потребитель будет использовать более простую подпись большую часть времени и позволит "занятой" выглядящей подписи, когда потребуется питание. Это также помогает самодокументированию, потому что использование мощной подписи говорит читателю, что код критичен к производительности. Если бы у регистратора была только мощная подпись, то не было бы «коммутируемой мощности».
Так что это полный круг. Я рад сохранить свою собственную чеканку «с возможностью набора», если ее еще нет, но я не могу удержаться от мысли, что мне не хватает очевидного обозначения этой практики.
p.s. Другим примером, относящимся к , но не совпадающим с «способностью набора», является принцип Скотта Мейера «сделать интерфейсы простыми в использовании и трудными в использовании неправильно».