V2EX piglei 的所有回复 第 1 页 / 共 9 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    piglei    全部回复第 1 页 / 共 9 页
回复总数  168
1  2  3  4  5  6  7  8  9  
> 但是在我看来, 你要传什么 output_writer 不还是要通过 if 来选择吗, 只是把一个地方的 if 换到了另外一个地方,

你的理解已经很接近:“多态”确实无法完全消除“if”。这是因为,人们总是需要用代码来表达某种“如果/否则”的逻辑。但和普通的“if/else”比起来,面向对象设计的区别在于,它会努力将这些“如果/否则”逻辑封装在不同的实现(`XWriter`)中,让“if/else”代码只存活于代码的边缘区(工厂函数),从核心区中销声匿迹。

什么是核心区?显而易见,是 FancyLogger 中实际完成日志打印的部分;什么是边缘区?在例子中,用 if/else 分支去创建对应的 Writer 实例的代码,前置于打印日志功能,可以被看作身处边缘区。对比例子中的两种方式:

1. 无 Writer 抽象时:核心区需要理解**全部的“如果/否则”逻辑**,才能完成日志打印
2. 有 Writer 抽象时:在边缘区创建 writer 实例,传递给核心区,后者**一视同仁**调用 writer 完成日志打印

本书中的代码示例,因篇幅原因实现的功能比较简单,不同代码之间所产生的对比可能不够强烈。当业务逻辑变得更复杂后,利用多态特性来提炼并封装“如果/否则”的优势会变得更显著。在我心目中,那是在整个“面向对象”中,最富有魅力的地方之一。
2022-08-12 19:25:09 +08:00
回复了 ppj 创建的主题 Python Python 每日一练:等分字符串
好答案前面有了,我再多贡献一条基于正则的花活。若干年前学自《精通正则表达式》,对于当时的我过于震撼,牢记至今:
>>> s = 'F0B42998CE34'
>>> import re
>>> re.sub(r'(?<=.)(?=(..)+$)', '-', s)
'F0-B4-29-98-CE-34'
@QuinceyWu @weihuilee @dearmymy @charexcalibur 感谢你们的支持。
@toan 问了出版方,还没有确定的答复 :(
@psyer 不是一类风格,不太好对比,建议简单试读后自己判断是否适合。
@root01 可以先看试读章节与开源文章,够你读一阵了。
@lion9527 @ClericPy @tfull @dream4ever @ice2016 @Freya21 @Elaina @fx0719 @yaron @v2exblog 感谢对书的认可和支持。
@devtiange
@upojzsb 电子版昨天刚在图灵社区上架(仅 mobi 格式): https://www.ituring.com.cn/book/3007 ,欢迎了解。
@LeeReamond 感谢建议,起标题时没多想,抱歉引起了您的误解。《流畅的 Python 》是一本非常棒的经典之作,内容既有深度,也十分全面,拙作在这些方面的确难以望其项背。但作为一本书,阅读价值是因人而异的。对于那些刚迈过新手阶段不久,苦恼于自身代码质量的程序员,我认为《 Python 工匠》里的经验之谈确实能为其提供一些帮助。感谢您的指点。
@wklken 感谢。
@chi1st 感谢支持。我字丑,你就当我用意念给你签过了吧,祝你读得开心。
2022-06-09 08:50:24 +08:00
回复了 acctv2 创建的主题 Python 有没有一些高质量的 Python 内容推荐?
我写了本 Python 进阶相关的书:[《 Python 工匠:案例、技巧与工程实践》 ]( https://www.zlovezl.cn/book/index.html),今年三月份出版。内容主要是一些编写高质量代码的技巧及工程实践建议,感兴趣的话可以试读了解一下。

- 试读样章: https://www.zlovezl.cn/book/index.html
- 豆瓣书评: https://book.douban.com/subject/35723705/
- 京东购买: https://item.jd.com/13068111.html

---

《 Python 工匠》是一本以 Python 进阶编程为主题的技术图书。纸质书由人民邮电出版社于 2022 年出版,与其他同类图书相比,《 Python 工匠》有着以下突出特色:

- 专注于基础编程素养与 Python 高级技巧的结合
- 内容深入 Python 语言内核,不浮于表面
- 知识点都由作者精心挑选过,而非罗列官方文档
- 通过有趣的“案例故事”表达有用的编程理念
支持(从没见过你描述里的那么详细的需求文档)
2020-12-25 18:18:46 +08:00
回复了 jimmyismagic 创建的主题 阅读 影响你最深的一本书是什么?
《代码大全 第二版》
@RockOrRoll 不是
@Crabby 没有硬性要求,需要看综合竞争力。
@impl 主要是参与平台后端服务研发,“Web 后台开发”也可算作职责之一。
@taowen 感谢支持。不但没放弃,队伍更壮大了。
2020-03-14 22:39:34 +08:00
回复了 vcent 创建的主题 Python pymysql 如何避免高并发处理同一条数据问题 谢大佬
搜索:select for update
供参考。
不要老想这些奇怪的事情,多写代码多看书、多想想怎么在代码写好,才是对自己最大的保护。
@fxxkgw 没有,只有深圳在招。
@liuhuipy 可以邮件我细聊。
2019-08-26 17:00:58 +08:00
回复了 NeverMoreGY 创建的主题 问与答 如何在初步接触中判断一个面试者的技术能力?
建议什么都别问
推荐一家我在深圳吃过的最满意的茶餐厅:新世界茶餐厅,位置在宝安老城区弘雅花园附近。一共去吃过两次,感觉很好。环境和装修稍微差点意思,因为已经开了很多年了。但是菜的口味都很不错,推荐冻奶茶、咖喱牛腩、牛河。
1  2  3  4 &nsp;5  6  7  8  9  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2623 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 27ms UTC 06:07 PVG 14:07 LAX 23:07 JFK 02:07
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86