在大多数代码中,我看到FORMAT语句放在循环之外,就在DO循环中的CONTINUE语句之后。我喜欢将它放在DO循环中,就在READ或WRITE语句之后。我不确定它是否会影响速度或引起任何混淆。在哪里放置FORMAT语句的最佳做法是:在循环内部还是外部? 谢谢,
答案 0 :(得分:2)
让我说明(有点传统的)反对在write
语句中使用格式字符串。
将编译单元中使用的所有格式语句放在同一单元中的某个块(传统位置在末尾)中。
这样,可以在多个写语句中使用相同的格式而无需冗余重复。这也使得期望一起使用的协调格式语句(例如表头,列标题和列数据格式)更加简单。当在多个地方使用的格式必须改变时,在write
语句中放置格式字符串的做法就成了问题。在代码周围喷洒(相同的)格式字符串有点像使用多个字面值,例如pi
。更好的做法是在一个地方定义一次。
至于将format
语句放入循环中,我认为这是一个没有价值的奇怪想法。由于format
语句更像是声明而不是可执行语句,因此在执行代码期间不会多次遇到它。如果靠近它所使用的地方对你很重要,那就把它放在循环之前或之后。
format
语句的位置是否会影响代码的性能?一,我希望任何体面的编译器在编译时处理(常量)format
语句并且不施加运行时负载。第二,如果您需要了解更多信息,请设置一些测试并衡量format
语句位置的影响。
最后,是的,可以使用字符参数来包含格式字符串,并在write
语句中使用它们。我还没有被说服这种方法与使用format
语句在风格上不同。传统的方法很明显,字符串是格式字符串。
如果您已经阅读过这篇文章,请阅读下面的@ IanH评论,它就字符串常量优于format
语句的优点提出了几点好处。
答案 1 :(得分:1)
最佳做法是不使用FORMAT语句,而是将格式字符串作为字符常量放入WRITE或PRINT语句本身。这使得读者在尝试理解代码的作用时不必跳转到另一个语句。
所以,而不是写
WRITE (55,9000) A
9000 FORMAT (4G12.5)
你应该写
WRITE (55,'(4G12.5)') A