В презентации Блоха он сказал, что проектировщик должен искать хорошее соотношение мощности к весу для API. Более того, он также подчеркнул, что « Концептуальный вес более важен, чем масса ». Я предполагаю, что вес для « Концептуальный вес », bulk предназначен для количества методов класса.
Но я не мог понять, что такое « Концептуальный вес », что такое « отношение мощности к весу ». Добро пожаловать в любое объяснение!
Блох привел пример: List.subList ()
имеет хорошее «соотношение мощности к весу». Если клиент хочет узнать индекс подсписка, ему не нужно вызывать метод с низким коэффициентом p2w indexOfSubList (a, b, e)
, вместо этого он может вызвать List .subList (a, b) .indexOf (e)
. Блох считал, что это «соотношение мощности к весу».
Источник:
API должен быть как можно меньше, но не меньше
indexOfSubList (a, b, e)
, вместо этого он может вызвать List .subList (a, b) .indexOf (e)
. Блох считал, что это «соотношение мощности к весу».
Источник:
API должен быть как можно меньше, но не меньше
indexOfSubList (a, b, e)
, вместо этого он может вызвать List .subList (a, b) .indexOf (e)
. Блох считал, что это «соотношение мощности к весу».
Источник:
API должен быть как можно меньше, но не меньше
Я бы интерпретировал «концептуальный вес» как количество абстрактных понятий, которые необходимо изучить и понять, чтобы использовать API. Концепты обычно сопоставляются с общедоступными классами, в то время как классы, которые не являются общедоступными, увеличивают объем, но не концептуальный вес.
Таким образом, с технической точки зрения, API имеет большой концептуальный вес, если типичный клиент API должен явно использовать множество классов, принадлежащих API, для работы с ним.
«хорошее отношение мощности к весу» означает, что API должен использовать как можно меньше общедоступных классов, чтобы предлагать как можно больше функциональных возможностей. Это означает, что API должен:
Я бы сказал, что
Я думаю, что API с хорошим соотношением мощности к весу — это API, который предлагает много функций (мощность), но требует небольших усилий для правильной работы (вес).
Это можно сделать, например, с помощью "Конвенции о конфигурации". (Обратите внимание, что это всего лишь пример, и вы можете добиться этого разными способами.)
Было бы полезно дать ссылку на презентацию Блоха, возможно, он имеет в виду что-то другое :-)
Он имеет в виду все, что вы получаете от использования API. Его пример относится к API коллекций, где каждый раз, когда вы обращаетесь к нему, вы получаете только определенные функции. С другой стороны, некоторые API будут загружать гораздо больше всего, чтобы дать вам некоторую функциональность.