2012-03-06 3 views
1

Можно создать дубликат:
Advantages and Disadvantages of using System.out.printf();Является ли printf() плохой?

В дискуссии в интернет-форуме, мне сказали, что с помощью printf метода (как в System.out.printf()) была плохая практика, и что я должен использовать println вместо этого, хотя пользователь не мог дать ясного объяснения этому, это было то, что «ему сказали». Это правда?

+1

http://stackoverflow.com/questions/548249/is-there-a-good-reason-to-use-printf-instead-of-print-in-java – Zavior

ответ

1

Нет, это неправда.

Единственное возможное объяснения я могу думать о том, что printf с буквальным \n и/или \n в строке формата будет производить платформы конкретной линии ломает ..., который является проблемой портативности. Но простым решением является использование %n в строке формата.

Конечно, используя printf, когда аргументы не нужно подставлять в строку формата, является менее оптимальным. Я бы не сказал, что это делает его плохим.

+0

Я прочитал об этой проблеме в документации Oracle по отформатированной печати, и я уже знал об этом. Но я думаю, что это вопрос знания доступных спецификаторов и почему их следует использовать. Спасибо за ответ. – Baderous

1

printf может делать вещи, которые println не может, так сказать, что вы должны всегда использование println, а не printf, очевидно, не имеет смысла.

Для тех, кто не знает спецификаторов форматирования, используемых в строках управления printf, их трудно прочитать - это может быть причиной того, что человек, с которым вы говорили, не рекомендовал вам использовать printf.

Еще один общий совет в следующий раз: помните, что есть много людей, которые с радостью дадут вам советы, несмотря на то, что не знают, о чем они говорят, и даже среди тех, кто do знают, о чем они говорят , есть много мнений о программировании, так как есть программисты. Таким образом, вы должны никогда не воспринимать что-либо как Евангелие только потому, что кто-то сказал вам или потому, что вы читали его в книге. Всегда попытайтесь понять причины совета и помните, что есть исключения из каждые правило. Поймите, что практически каждое решение, которое вы принимаете при разработке или реализации программы, имеет как плюсы, так и минусы, поэтому обычно нет ни одного варианта, который безусловно «прав»; вы,, должны использовать свой опыт и суждение, чтобы определить, что является «правильным» способом делать вещи в вашей текущей ситуации, даже если это может быть «неправильно» в большинстве других случаев.

+0

Я согласен с вами. Поскольку я скептически отношусь к этим «догмам» кодирования, и я никогда не слышал об этом, я решил спросить здесь. – Baderous

2

Если нужно возможности форматирования printf, то нет никаких сомнений в println не является приемлемой альтернативой.

Если с другой стороны, вы просто выводя обычную строку, например .:

System.out.printf("All work completed.\n"); 

, то это было бы более канонический использовать println для этого. С точки зрения правильности программы это не имеет большого значения - printf, вероятно, будет незначительно более дорогим для запуска, но на самом деле это не будет актуальным.

Тем не менее, я видел пример кода, который использовал printf для простого вывода, и я признаю, что я сбив с толку. Поэтому я бы придерживался только println, что сделает ваш код более знакомым и понятным для других разработчиков.

(ETA: Даже рассмотрение свой собственный пост сейчас, я инстинктивно чувствую, что пример кода неправильно и хотите исправить его println Так что мой ранее мнение, безусловно, остается в силе.).

0

Используя либо один «плохой «практика, если вы делаете это для ведения журнала отладки.

Если это так, используя правильную структуру ведения журнала, это «лучшая» практика. Java имеет много возможностей для выбора.

+0

Где в вопросе сказано, что это цель регистрации? – brunoais

+0

он спрашивает о плохой практике, я приводил пример, когда это ... просто случается, применимо к обеим альтернативам –

Смежные вопросы