duangsuse::Echo
774 subscribers
4.43K photos
135 videos
583 files
6.73K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
https://github.com/microsoft/pyright/blob/da39a2a78a442d2a6b29d664b32475c361c853f1/packages/pyright-internal/src/tests/samples/dataclass8.py
@dataclass
class BaseClass:
my_ref: "ReferredClass"

欸,有更新 data class 支持,而且还内部支持 typing 实现 gradual typing 不像 Ruby 太 duck typing 了,看来 Py 还是有点东西
https://github.com/microsoft/pyright/blob/930c2021c63531248c6a979e3d3afdbcca14f16b/packages/pyright-internal/src/analyzer/types.ts#L530
export function hasUnknownBaseClass(classType: ClassType)
欸,原来不报类型错误必须要在超类链上啊... 真是过分呢,我只是想面向对象 Mixin 啊
啊…… 看来数学不好果然难呢。 重构的时候我把 xs[a:-1] 的 exclusive end -1 省略了(那就包括末项了)、 map(it*b, round(n/b)) 给理解成 range(a, n, b) 了,我加的 while a%b != 0 查找其实就是 (a/b) *b ... 虽然都是很简单的倍数关系啊
不过,在我经历无数烂代码的洗礼后,终于找到了bug的源头(一个str属性配置没适配...) 现在终于可以移植过来了emmmm...
duangsuse::Echo
不过,在我经历无数烂代码的洗礼后,终于找到了bug的源头(一个str属性配置没适配...) 现在终于可以移植过来了emmmm...
有意思的是这位大神作者(可惜代码质量怎么那么差) 写出的代码虽然很好用,但其实它是薛定谔程序! 测试里应用范围内无变量,但程序行为却间隔1次时好时坏!
This media is not supported in your browser
VIEW IN TELEGRAM
这个故事告诉我们,不要尝试复制粘贴自己的代码然后做出改动。多抽提出函数调用。不然出了问题会非常麻烦。(这位大佬是把 横向纵向 的所有区别代码都用 self.op = 的形式支持,这又走另一个极端了... )
This media is not supported in your browser
VIEW IN TELEGRAM
不过说起来这次重构限制也蛮大的。目的只是要支持的几个控件里的一小个,因为原代码质量和工具不好 费了一天时间才移植一个 Widget, 而且还阻塞了我其他任务
也是因为重构时要求在完整正确的代码上改。不然一边改一边加特性还要修问题,在自己不熟悉UI框架的情况下很难正确。

要是这个作者能把他 a = initial; a = op(a, b) | a = initial; if p(a): a = b 的这种坏习惯改一改,学会多建立私有方法/局部函数 就好了,我看充满重赋值的代码时是相当头疼的……
不能怪我抱怨 ,因为这代码真的是让人无法忍受…… 你看这个,只有 anchor 一个变量,他竟然在一个循环里,给这个玩意写了两遍, 而且if体只引用到了self.... 面向对象的优势何在
唉真是头疼呢。要是这些大佬能在写的时候注意点,就不会出现这么多难以复用的代码了
不过这也不能,如果只是修改代码风格、压行的话,是起不到简化作用的,不同的调用参数太多了。 我吐嘈的是这个人没做到一些最基础的复用,看起来就像是 python wtf.py 的面向查错编程一样(当然对 Tk 的 GUI 有些问题也迷所以必须测试,但不意味着你可以把冗余逻辑复制粘贴而不是化作复用函数)

如果要进一步提升代码质量,不使用高阶函数是很难实现的(那意味着你没法把模板化函数命名作动词,然后用另一些动词调用它从而实现更高层次的复用)
用高阶函数(当然那是概念上的名字,工程中我把函数值命名为和函数/方法一样的动词)才能实现更好的效果,如图把表述式代码和定义式代码比较,它简直像汇编一样眼花……

其实相关知识许多人也知道,但是他们的代码复用意识淡薄,而且现在框架丛生,人们越来越懒得写自己的抽象了;开始习惯把自己禁锢在别人提供的安乐窝里,照着惯用法一点一点堆积木。
即便不是低级错误也应该是可以预防的错误啊…… 怎么看都是原有 888 端口加个 /pma 都直接越权访问。 无非是外部代码插入server不当或是验证时序/接口失当级别的问题,在程序封包层错误都可以导致此问题,还不是很渣..
Oh come on ... 这可爱的 truthy value... 我还以为是 0.0>0.5 或者自动数值类型提升出问题了呢。 我开始怀念 Ruby 里只有 nil 和 false 的 if / || 表达式了。
This media is not supported in your browser
VIEW IN TELEGRAM
Python 里感觉用个 (a if p else b) 都不敢乱写,乱写会出岔子/影响预期性能(开个玩笑)/etc.
HowFarIllGo
1.9 KB
对了,我这里有份迪斯尼动画电影 Moana 主题曲的(半完成)音高线,用过我 Hachiko(当然我知道没人用 哪怕是 producer. 嘿嘿)的人可以拿去现场演奏(
啊... 花了好大力气它终于 works 了,本来还想一笔带过的,花了一天…… 不得不佩服写 GUI 控件的人的勇气,我被迫从它的烂代码里了解了它的具体操作,不过重构真是无聊,相信我,别做 refactor man, 一点也不好玩。
This media is not supported in your browser
VIEW IN TELEGRAM