以顺其自然的思路写程序(Thinkvd开发日志)
来源:互联网 发布:图像轮廓提取软件 编辑:程序博客网 时间:2024/06/02 17:37
有的程序在写之前都会很好地“研究”一番,讲究一些独特的技巧,但有时可能造成后来的维护者半天看不明白。过去这方面见过,相信也有人遇到过类似的情况。
个人觉得一般程序在不响应功能的情况下应该顺其自然,适合常规思维、简单易维护为目的。
下面以开发中的thinkvd merge items 合并不同的条目为例说明一下:
实现目的:把当前选择的ITEM合并生成新item,需要合并的item为刚生成的新item的子item,有点拗口,以图示例:
实现思路:
1。判断item 数不小于2条
2。生成新的item1作为父记录
3。遍历itemA、B、C并成为item1的子item 2,3,4
4. 将A,B,C的数据COPY到对应的2,3,4中
5。计算出item1的时长及输出文件大小。
相关QT代码:
void AxListTreeViewEx::onMergeItem()
{
QModelIndexList indexs = selectedRows();
if (indexs.count() < 2) return;
tplStringVarMap map;
map.insert("_name", "merge item");
map.insert("_outfile", "merge_tem");
map.insert("_target", m_profileComboBox->getProfileSuffix());
QModelIndex index = addItem(map, QModelIndex());
ImListTreeItem *pItem = modelEx()->getItem(index); //item1
m_profileControl->putProfileData(pItem->getItemKey());
QString s;
double totalTime = 0;
foreach(QModelIndex idx, indexs)
{
ImListTreeItem *item = modelEx()->getItem(idx); //itemA,B,C
totalTime += item->data("_duration").toDouble();
// subItem info
map.clear();
map.insert("_name", item->data("_name"));
map.insert("_duration", item->data("_duration"));
map.insert("_target", pItem->data("_target"));
// qDebug() << leftVal << "== "<< rightVal << s;
QModelIndex subIdx = addItem(map, index); //item2,3,4
ImListTreeItem *subItem = modelEx()->getItem(subIdx);
subItem->backupMediaData(item);
}
pItem->setData("_duration", totalTime);
pItem->setData("_outsize", outputSize(pItem, m_profileControl));
}
自然地实现上面的代码,相信将来即使它出现了问题,维护者也不会感觉到头痛.
- 以顺其自然的思路写程序(Thinkvd开发日志)
- thinkvd 视频效果(Thinkvd开发日志)
- qt中数据存储方法(接口)的思路应用1(thinkvd开发日志)
- Qt QTabWidget的BUG(thinkvd开发日志)
- thinkvd开发日志(2010.11.09)
- DVD subtitle (thinkvd开发日志)
- swf转换成video的技术方案(thinkvd开发日志)
- QListWidget的edit如何及时响应?(thinkvd开发日志)
- 关于创业合作方面的认识(thinkvd开发日志)
- SDL 共享内存存在问题(thinkvd开发日志)
- Qt QImage图片透明设置(Thinkvd开发日志)
- 计划统一播放接口(thinkvd开发日志)
- SDL内存泄漏跟踪(thinkvd开发日志)
- 音视频同步问题(thinkvd开发日志)
- thinkvd将支持rmvb转换 (开发日志)
- mingw下编译mplayer (thinkvd开发日志)
- thinkvd第二版开发要新增加的功能(开发日志)
- SDL实现overlay方式双屏显示的应用流程分析(thinkvd开发日志)
- 读书时间 2010-12-16
- 禽兽!我等着你! 【转】
- 关于静态链接库(Lib)与动态链接库(DLL)
- linux 源代码阅读工具 source navigator
- 好心情变成坏心情
- 以顺其自然的思路写程序(Thinkvd开发日志)
- C++语言问题
- 开始
- 我对字符设备驱动的理解
- 安装lnmp
- 大牛的计划-学习
- 使用类加载器加载配置文件
- C/C++从入门到高手所有必备PDF书籍收藏,喜欢的朋友支持下吧~
- PKUOJ分类