当前端太困难了,我太难了,我想回去…… 还是写 Kotlin 好了,连个循环加载都做不到,import 居然能是『Statement』,各种 workaround,服了
不断地修改和抽提,也是我每写一个应用基本都会对应地弄出一个复用库的原因,所以我根本不愁写不出来『框架』,我写点应用都能写出『框架』来,只是时间真的不能保证……
duangsuse::Echo
乍一看大家会觉得它太冗了,虽然的确很冗,但具有可维护性、可扩展性,而且其复用可能性更大、给新人阅读理解也较容易。
看起来冗,但可以举个例子:如果要再兼容某个类似 KotlinPlaygound 的东西,要怎么样?
这个『冗长』 的版本只需修改 playgroundDefaults、literateCodeFilter、LiterateKtMagics.KotlinPlaygroundId 对应的几个逻辑就可以了,而如果写得更『精简』,没那么方便了。
再比如,很多本来可以通过面向对象继承提出的逻辑,如果不写『冗』一点,也是感受不出的。
再比如,如果你要写一个复用库,最好的方法就是边写边用!这时候没有『把结构写「复杂」』的觉悟,是很难完成同时编写应用和复用库的任务的。
总之,冗长的好处只有用过它的人才能完全体会得到。
那,如果模块化使得项目结构更复杂,让新人难以理解了怎么办???
所以要写好 README.md 啊…… 没人告诉我们,只有 project root 可以放 README 吧。
这个『冗长』 的版本只需修改 playgroundDefaults、literateCodeFilter、LiterateKtMagics.KotlinPlaygroundId 对应的几个逻辑就可以了,而如果写得更『精简』,没那么方便了。
再比如,很多本来可以通过面向对象继承提出的逻辑,如果不写『冗』一点,也是感受不出的。
再比如,如果你要写一个复用库,最好的方法就是边写边用!这时候没有『把结构写「复杂」』的觉悟,是很难完成同时编写应用和复用库的任务的。
总之,冗长的好处只有用过它的人才能完全体会得到。
那,如果模块化使得项目结构更复杂,让新人难以理解了怎么办???
所以要写好 README.md 啊…… 没人告诉我们,只有 project root 可以放 README 吧。
Forwarded from duangsuse Throws
#dev #PLT 给大家讲个有趣的事情:
🐔鸡你太美。
我在网易云音乐找这个东西的时候,对两首歌特别可心。
其一是原版《只因你太美》、其二是一个纯音乐 remix。
我们知道,原版(SWIN) 的是有歌词的(只因你太美……)
可是 remix 版只有重复的『鸡你太美……实在是太美』这样类似词穷的东西,我们认为它是纯音乐,没有唱词。
如果你是网易云的工程师,尝试用 #Kotlin 这样的『面向对象』编程语言给这样可能有歌词的歌曲建模,你会怎么建呢?
——
首先,我想到的办法是类似这样,
有点类似 libc 的『特殊返回值』,比如函数
但是这不是很规范,而且容易给数据维护制造问题,所以:
这样我们也可以同时表达有歌词的『只因你太美』和没歌词的『只因你太美(remix)』
可是,如果除了歌词外还有别的东西可能有出入,或者觉得『一首歌可能有歌词也可能完全没有、但居然还要存
🐔鸡你太美。
我在网易云音乐找这个东西的时候,对两首歌特别可心。
其一是原版《只因你太美》、其二是一个纯音乐 remix。
我们知道,原版(SWIN) 的是有歌词的(只因你太美……)
可是 remix 版只有重复的『鸡你太美……实在是太美』这样类似词穷的东西,我们认为它是纯音乐,没有唱词。
如果你是网易云的工程师,尝试用 #Kotlin 这样的『面向对象』编程语言给这样可能有歌词的歌曲建模,你会怎么建呢?
——
首先,我想到的办法是类似这样,
val NO_LYRICS: Lyrics = TODO()
data class Song(/*...*/, val lyrics: Lyrics)
比如,如果我们以链接(URI)的方式“存储”歌词,那么没歌词的情况:const val NO_LYRICS = "nolyrics:" 有点类似 libc 的『特殊返回值』,比如函数
ioctl 如果返回 (-1) 表示请求出错。但是这不是很规范,而且容易给数据维护制造问题,所以:
data class Song(/*...*/, val lyrics: Lyrics?) 这样我们也可以同时表达有歌词的『只因你太美』和没歌词的『只因你太美(remix)』
可是,如果除了歌词外还有别的东西可能有出入,或者觉得『一首歌可能有歌词也可能完全没有、但居然还要存
null』该如何?sealed class Music(/*...*/) {
data class Song(/*...*/, val lyrics: Lyrics): Music(/*...*/)
}
然后,我们在取的时候判断 music is Song,或者 (music as? Song)?.lyrics ?: "无歌词" 就可以了。#dalao https://github.com/spieglt/nestur
这个真心不错啊,APU 和 PPU 是啥…… 我只知 ALU(Arithmatic Logic Unit) 毕竟是游戏机处理平台啊!还能跑超级玛丽!只用底层的 SDL 绘图
这个真心不错啊,APU 和 PPU 是啥…… 我只知 ALU(Arithmatic Logic Unit) 毕竟是游戏机处理平台啊!还能跑超级玛丽!只用底层的 SDL 绘图
GitHub
GitHub - spieglt/nestur: The NES (emulator) you left outside in the rain but let dry and still kind of works
The NES (emulator) you left outside in the rain but let dry and still kind of works - spieglt/nestur
要继续写 Literate Kotlin 的项目生成和关于 Relational Programming 的 LiterateKt 文章,但我觉得不如先…… 休息一下,写点简单的东西 🤔
才体会到工程的难度,原来测试不过不能 push 是真的!我刚才发布了一个 v1.2 一上来就是修完 bug 没修好,不能用的版本!
一个新版本居然不能用??就发布了??工程管理不善??太难了!!!
一个新版本居然不能用??就发布了??工程管理不善??太难了!!!