炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 梦想飞翔

[建议-已解决] 版主,这个命令能不能精简一些啊。

[复制链接]

该用户从未签到

发表于 2016-1-19 18:18:58 | 显示全部楼层
梦想飞翔 发表于 2016-1-19 13:09
觉着你说的这三代精简有点言过其实啊……

不多的。你可以封装上一层,在自己封装层减少命令就行了
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2016-1-19 22:44:10 | 显示全部楼层
    XPane_HidePane()
    XPane_ShowPane()
    这个模块是还没有完善的;


    XEle_EnableFocus()
    XEle_IsEnableFocus()
    这两个是缺一不可的. 一个是启用焦点,一个是判断是否有启用.
    如果没有启用焦点函数,你如何  启用/禁用 焦点?
    如果没有判断函数,你如何判断是否可以获得焦点?

  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2016-1-19 22:54:54 | 显示全部楼层
    接口少,并不代表精简, 在功能相同的情况下, 接口少,必定带来接口的复杂性.
    例如:
    精简前: 原来一个接口实现一个功能,
    精简后: 一个接口实现10个功能,  那么接口的复杂性就增加, 过多的参数反而显得更加难以理解,不直观.

    接口的精简前提是不影响 简单易用.
    功能强大接口必定会增多, 例如windows操作系统, 接口API越来越多,而不是越来越少.
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2016-1-19 22:57:48 | 显示全部楼层
    在使用系统API的时候, 你会深刻体会到, 如果一个函数的参数太多,那么你不得不去看帮助文档,去理解每个参数的含义,因为参数的含义太多,你根本记不住.
    遇到参数多的函数, 就会有种头痛,头大的感觉.

    该用户从未签到

     楼主| 发表于 2016-1-20 10:21:57 | 显示全部楼层
    admin 发表于 2016-1-19 22:44
    XPane_HidePane()
    XPane_ShowPane()
    这个模块是还没有完善的;

    XEle_EnableFocus()
    XEle_IsEnableFocus()

    这个就象是水龙头在流水一样,咱们先去开水龙头,再去判断水龙头是否打开。实际上这个判断没有意义。就象你判断水龙头是否打开后再进一步动作,其实再向上一步,当我需要水龙头打开的时候,我就去开,不需要的时候我直接关了。不需要去判断是否打开,再去执行开或关。

    该用户从未签到

     楼主| 发表于 2016-1-20 10:23:02 | 显示全部楼层
    admin 发表于 2016-1-19 22:57
    在使用系统API的时候, 你会深刻体会到, 如果一个函数的参数太多,那么你不得不去看帮助文档,去理解每个参数 ...

    这个观点是同意的。但只是相对参数太多的函数而言。

    该用户从未签到

     楼主| 发表于 2016-1-20 10:24:30 | 显示全部楼层
    admin 发表于 2016-1-19 22:54
    接口少,并不代表精简, 在功能相同的情况下, 接口少,必定带来接口的复杂性.
    例如:
    精简前: 原来一个接口实现 ...

    需要的接口咱们肯定要增加,我是指相对可以减少的函数,或者是有点重复的函数。
    当然我是希望炫彩功能越来越强大,越来越完美的。
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2016-1-20 12:23:07 | 显示全部楼层
    XEle_EnableFocus()
    XEle_IsEnableFocus()

    XEle_IsEnableFocus()  这个是需要判断是否启用
    1:  因为C++注重效率, 如果不注重效率当然可以重复调用启用函数.
    2:  有时候你需要判断该元素是否可以获得焦点,而不是让他可以获得焦点.

    XPane_HidePane()
    XPane_ShowPane()
    这两个接口,合并与不合并都可以.

    1 .如果合并 , XPane_ShowPane(BOOL bShow)
    接口减少,增加参数,那么就增加复杂度, 在实际使用中,往往有些用户会把参数写反.如果不合并就不会出现参数写反的情况

    2.如果不合并, 那么接口很直观, 一眼就能看出含义.

    合并的前提是: 不影响简单易用的特点.
    精简的前提是: 精简而功能不减少 ,如果功能减少那岂不是退步了.
    炫彩第三代 :   是架构重新设计,所有代码重写.

    在接口的设计上,要考虑到多种情况,而不是只考虑到一种情况.也就是通用性, 要求接口能够满足A用户的需求,同时也能满足B用户和C用户的需求.

    你自己创建的对象,在局部代码块中,当然知道是否已经启用,当到另外一个代码块中,你就不知道他是否启用,而他是谁创建,他是谁你也都不知道了,这就需要判断.
    当你的UI元素比较多的时候,那么你不可能保存所有的元素是否启用状态, 那么这个时候就需要判断是否启用. 这里说的就是其中一种情况.
    而你说的也是一种情况,但是没有考虑到其他用户的需求.


    该用户从未签到

     楼主| 发表于 2016-1-20 13:12:28 | 显示全部楼层
    admin 发表于 2016-1-20 12:23
    XEle_EnableFocus()
    XEle_IsEnableFocus()

    首先谢谢版主的回复。

    我也是在减少接口不减少功能的基础上考虑的。

    我举的例子只是一小部份,类似函数在炫彩库中还是很多的。

    我是说开发者可以把判断加在函数内部,我就直接给出启用命令,函数内部去判断是否已经启用了,如果已经启用那就不用再次启用,勿略请求,如果是没有启用,那就给下一步启用动作。

    那是不是就达到了功能不精简,而接口精简呢。

    而不用去管这个组件是谁写的,有多少的代码,也不用保存元素是否启用。

    其实相对系统函数,炫采函数已经很简单了。

    XEle_Enable()
    XEle_IsEnable()

    XEle_EnableFocus()
    XEle_IsEnableFocus()

    XEle_EnableDrawFocus()
    XEle_IsDrawFocus()

    XEle_EnableEvent_XE_PAINT_END()
    XEle_IsEnableEvent_XE_PAINT_END()

    XEle_EnableBkTransparent()
    XEle_IsBkTransparent()

    XEle_EnableMouseThrough()
    XEle_IsMouseThrough()

    XEle_EnableKeyTab()
    XEle_IsKeyTab()

    XEle_EnableSwitchFocus()
    XEle_IsSwitchFocus()

    XEle_EnableEvent_XE_MOUSEWHEEL()
    XEle_IsEnable_XE_MOUSEWHEEL()

    '这两个函数,一个是有类型的,一个是无类型的。
    XEle_SetZOrder()
    XEle_SetZOrderEx()

    '象这类注册事件的函数,有些是两省略参数的,有些是含参三个参数的。但是输入是一样的。
    如果要省略,作者不填写或者填0就可以了。弄出三个函数我是不明白有啥特别的意义。
    XEle_RegEventC()
    XEle_RegEventC1()
    XEle_RegEventC2()

    XWnd_RegEventC()
    XWnd_RegEventC1()
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2016-1-20 20:01:07 | 显示全部楼层
    梦想飞翔 发表于 2016-1-20 13:12
    首先谢谢版主的回复。

    我也是在减少接口不减少功能的基础上考虑的。

    上面的回复已经回答你了这些函数为什么不可以省略的.
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-5-4 11:35 , Processed in 0.068376 second(s), 15 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表