5千行的GUI库,又双叒叕删减代码了

Wesley13
• 阅读 489

删减代码似乎是一件让人上瘾的事情,随着大家对GuiLite代码的熟悉,又发现了一些不必要的代码;于是6千行的代码,被删减到5千,而今天更删减到了让群主都难以置信的4千行。好担心有一天GuiLite因为代码数量不够而被消失了。。。

在下真的认为:目前的代码已经精炼无比,绝对没有再次删减的可能;但是谁知道打脸会不会在2021年准时到来呢?

代码更新:

1. 删掉audio相关的代码 -- 感谢开发群同学犀利的眼光

2. 重构UI消息回调机制,再见MFC,你好Android

Audio部分:

由于历史原因,Audio作为一个功能在GuiLite里面保留了很久;但根据这几年的实践,它的使用率是非常低的,而且嵌入式环境Audio环境比较复杂,相对难以统一;所以,让这段代码保留在主干里面是不合适了。

但群主觉得该代码质量依然很好,可以完美支持Windows,Linux,Android平台,据说当时发出的滴滴声跟心跳频率太过接近,很容易让人产生不适感。所以,也欢迎大家通过查阅历史commit的方式查阅和使用这些代码。

UI消息回调:

很早的时候,就有开发群同学诟病GuiLite的消息传递机制太老,跟MFC很像;群主觉得MFC的生态强大,接口与之保持一致,或相似,有利于开发者降低学习成本;谁知,今天连MFC开发者都看不惯这套‘夺命连环消息宏’了。。。再看看Android的开发接口,给一个按键添加一个响应函数,永远都是1行搞定;这学习成本是10000000:1呀。所以消息机制的修改必须,立刻,马上进行!

5千行的GUI库,又双叒叕删减代码了

当然,修改的阵痛也是难免的,基础代码的修改,意味着所有Demo的相应调整。为此我们进行了仔细的测试,保证了代码的高品质和体验上的一致性。

剩下的就是巨大的优势了:不仅GuiLite的代码获得了精简,所有Demo的代码也得到了大大简化,面对23个Demo,我们竟然很快就完成了代码更新和测试。

举个栗子,现在作一个按键响应函数是这样的:

Your_button->set_on_click(WND_CALLBACK(&c_your_window::on_button_clicked));

是的,就是1行!

我们还活着:

先看看活跃数据:GuiLite的编译,运行次数超过2万次;运行时间约3万分钟(有兴趣的同学,可以参看不定时公布的活跃数据图表)。同时在Gitee上有超过2千的star,在GitHub上有接近5千的star。

5千行的GUI库,又双叒叕删减代码了

GuiLite自大出生以来,就争议不断,一直在国内外优秀GUI软件的夹击中生存;能活到今天,确实超出了群主的预期,唯一获得的经验就是:重视开发者的每一次抱怨,每一次PR,不断从开发者的鞭策中汲取营养和方向,Keep hungary,Keep foolish,把GuiLite打造成为全球开发者手中简单易用的神兵利器。

最后,都读到这里了,也随手给GuiLitehttps://www.oschina.net/p/guilite)投个票呗;不求大红大紫,但求天下开发者:精力充沛,头发茂盛,为祖国健康工作40年。

5千行的GUI库,又双叒叕删减代码了

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Java修道之路,问鼎巅峰,我辈代码修仙法力齐天
<center<fontcolor00FF7Fsize5face"黑体"代码尽头谁为峰,一见秃头道成空。</font<center<fontcolor00FF00size5face"黑体"编程修真路破折,一步一劫渡飞升。</font众所周知,编程修真有八大境界:1.Javase练气筑基2.数据库结丹3.web前端元婴4.Jav
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
Unity横屏
Android下发现Unity里面的Player设置,并不能完全有效,比如打开了自动旋转,启动的时候还是会横屏,修改XML添加以下代码<applicationandroid:icon"@drawable/ic\_launcher"                    android:label"@string/app\_name"
Stella981 Stella981
2年前
JOptionPane修改图标
1.在Linux平台下.JOptionPane会显示Java默认的图标,在window平台不显示图标,如何替换这个图标了?2JOptionPane.setIcon(Icon)修改的是内容区域的icon,而不是左上角的Icon.所以需要通过修改Jdialog/Frame的图标来达到修改默认图标的问题.3.代码:if(JOptio
Stella981 Stella981
2年前
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法参考文章:(1)Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.codeprj.com%2Fblo
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这