Как следует из самого слова, я бы сказал, что вы можете обсуждать связь только в том случае, если у вас есть хотя бы два задействованных элемента.
Утверждение, что scanf()
само по себе связано, для меня не имеет особого смысла.
Учитывая два модуля (две функции, два класса и т. д.), они могут быть более или менее «связаны» в зависимости от того, насколько один зависит от другого.
Например, они могут совместно использовать глобальную переменную или (файл), так что, если один изменит ее, это повлияет и на другую. Либо их надо вызывать в определенном порядке (иначе они не будут работать).
Слишком тесная связь - это плохо с точки зрения обслуживания, вы можете изменить что-то в модуле, а позже обнаружить, что вы внесли ошибку в другой модуль!
С этой точки зрения я не могу придумать ни одной функции в стандартной библиотеке C, от которой может зависеть scanf()
. Но даже если бы он был, это было бы проблемой для тех, кто поддерживает стандартную библиотеку, а не для программистов.
Вместо этого связность относится к тому факту, что модуль (опять же: функция, класс, ...) выполняет одну идентифицированную задачу. Худшее, что может быть, — это когда у вас есть функция, которая выполняет две (или более) несвязанные задачи только потому, что они могут выполняться одновременно. Например, у вас есть функция, которая вычисляет среднее значение набора чисел и очищает каталог, в котором вы будете хранить результаты. Это плохо с точки зрения ясности (и, следовательно, вы увеличиваете вероятность ошибок) и с точки зрения повторного использования (мало шансов, что вы когда-нибудь снова вызовете эту функцию в программе).
Насколько я могу судить, scanf()
выполняет одну работу (чтение набора значений из стандартного ввода по шаблону) и делает это хорошо.
person
Remo.D
schedule
03.06.2015
scanf()
обычно не принимает входные данные типаfloat
иchar
. Он принимает типы ввода, такие какfloat *
иchar *
. - person chux - Reinstate Monica   schedule 03.06.2015