作者agogoman (cocorosie)
看板Soft_Job
标题Re: [讨论] Python 3.10将加入Switch-Case语句
时间Sat Mar 27 22:20:05 2021
我个人是很讨厌很多if-else, 或是switch case.
并不是说不好, 只是很容易出现有些section是code, 有些是function.
案子急一点, 重覆的code就会很多.
几百个if-else/switch-case就有机会变成上万行的code. 这个就很阿杂了.
就之前数字区间的code, 我是会往这个方向走
import operator
def over_100m(s):
print('over 100m')
def ten_to_100m(s):
print('10 - 100m')
def zero_to_ten(s):
print('0 - 10')
def is_zero(s):
print('0')
def is_negative(s):
print('< 0')
map = {(operator.ge, 100000000): over_100m,
(operator.ge, 10): ten_to_100m,
(operator.gt, 0): zero_to_ten,
(operator.eq, 0): is_zero,
(operator.lt, 0): is_negative}
eigen_spectrum = [120000000, 1000, 10, 8, 0, -10]
for s in eigen_spectrum:
for c in map:
if c[0](s, c[1]):
map[c](s)
break
这样至少可以强迫分工的时候, 有一个列表可以作维护.
不过coding style这个真的见人见智, 我是不觉得有绝对好坏之分.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.144.241 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1616854807.A.2F3.html
1F:推 alihue: 想着根本还没发生的"几百个if",然後过度优化成这样 03/27 22:22
2F:→ alihue: 可读性直接差了一个等级 03/27 22:22
3F:→ IcecreamHsu: 如果插了一个区间是10-1000 做A, 1000-100m 做B 你 03/27 23:07
4F:→ IcecreamHsu: 这段 code 要改多少地方? 再看看下面那段 code 可读 03/27 23:08
5F:→ IcecreamHsu: 性 这样真的有比较好吗 03/27 23:08
6F:→ IcecreamHsu: 无视我第一句推文好了 跟 if-else 改的量差不多 03/27 23:24
7F:→ aalexx: 毫无缘由的refactor十之八九是无意义的 03/27 23:46
8F:→ agogoman: 原来第一时间想到的算是最佳(笑), 还refactoring... 04/04 06:02