将三元运算符拆分为多行的推荐布局是啥?

Posted

技术标签:

【中文标题】将三元运算符拆分为多行的推荐布局是啥?【英文标题】:What is the recommended layout for splitting ternary operator into multiple lines?将三元运算符拆分为多行的推荐布局是什么? 【发布时间】:2019-09-16 02:58:39 【问题描述】:

为了提高代码的可读性,我需要将三元运算符表达式拆分为多行。我唯一的想法是这样的:

very_long_function_name(
    ...
    very_long_expression_if_the_condition_is_true
      if the_condition
      else another_expression_if_the_condition_is_false)

不幸的是,PyCharm 声称continuation line over-indented for visual indent 违反了PEP8。当我将运算符包裹在大括号中时,PyCharm 没有提出异议,但恕我直言,代码的可读性较差。

有没有[半]正式的建议将三元运算符分成多行?

辅助功能/方法的声明不是一种选择。

【问题讨论】:

如果您担心可读性,我将首先使用参数名称,在调用之前使用长条件表达式设置名称。 @chepner 我喜欢你的建议,+1。不幸的是,实际问题是其中一个表达式是方法参数(它是固定的 API),具有长而有意义的名称。 除非它是关键字参数的参数名称,否则您始终可以只定义一个名称较短且值相同的新变量 (short_name = long_name)。即使它 参数名称,您也可以改为通过 dict (short_name="long_name"; func(**short_name: value) 传递它。如果没有更多关于实际使用的细节,很难提供任何好的建议。 【参考方案1】:

代码格式化通常太见仁见智了,所以我认为 Opinionated and automated code formatting 是解决方案 - 安装并运行 black 并停止谈论它。

【讨论】:

这正是我寻找[半]正式建议(如 pep-8)的原因。不过会看看black,谢谢! 我是这样做的:github.com/brunns/brunns-matchers/blob/master/tox.ini#L125

以上是关于将三元运算符拆分为多行的推荐布局是啥?的主要内容,如果未能解决你的问题,请参考以下文章

带有三元运算符的海象运算符的正确语法是啥?

爪哇“?”用于检查 null 的运算符 - 它是啥? (不是三元!)

这行三元运算符的语法是啥

PHP三元运算符

React useState:如何将三元运算符放在三元运算符中?

三元运算