热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

电话本小程序开发完成及感想

程序虽然很小,很简单,也很丑陋,但是确实本人开发的第一个完整的可用的App。构思,编码,简单的测试,直到制成安装包都是一个人完成。以前虽然也写了不少C#和java代码(几万行吧),也写过无数的C和C++的小玩意,但要么是只完成大项目的很小一部分,要么就是那种没啥意思的“helloworld!”测试算法的可行性。
这周花了几天业余时间开发了一个电话本的小程序。

程序虽然很小,很简单,也很丑陋,但是确实本人开发的第一个完整的可用的App。构思,编码,简单的测试,直到制成安装包都是一个人完成。以前虽然也写了不少C#和java代码(几万行吧),也写过无数的C和C++的小玩意,但要么是只完成大项目的很小一部分,要么就是那种没啥意思的“hello world!”测试算法的可行性。

程序的基本信息:

开发工具: VS2010;

大 小 :安装包500k;

有效代码:500行左右;

架 构 :.NET 4.0 Client Prifile;

主要技术:XML 读写,WPF 界面制作;

开发时间:大约不到20小时吧,估计在15小时左右;

以下是一些截图:

登录

虽然是小程序还是总结了一些经验,记下来,以后说不定用得上。

1. 一定要防止贪多求全,贪多吃不下的情况。上次的坦克大战就因为这个原因夭折了,又想界面很炫,又想结构新颖,还想使用没有过的新技术,结果只有死路一条。这次谨记在心,对功能能简化就简化,界面也简单到极点,终于修得正果。

2. 先进行技术测试在进行实际开发,为了这个程序写了三四的小程序测试关键技术和想法是否可行,完成之后才进行的开发。

3.分层分块开发,最后进行拼装。保证每个层之间的独立性,不仅方便开发也方便日后的维护和升级。数据逻辑与界面的分拆使得未来可以对界面或下层逻辑进行单独的改进。在开发上层界面时,使用了一个TestData类,这个类用一些列的static 方法提供了界面需要的假数据。在开发下层时又使用了一个console程序。等到两个都差不多的时候才进行的组装。

4.跑通优先,逐步求精。在最开始的时候,界面就是几个歪歪扭扭的按钮,在界面中间写界面名称。点击按钮的结果就只有两种,要么转到另一个界面,要么弹出messagebox 显示按钮的名称。先把所有的函数都写出来,不急着实现,返回个null 或是 new 的实例或是 testdata 中取出的假数据,等跑通之后,逐个实现。界面一点点的丰富,最后在调整位置大小那些无关紧要的东西。

5.自己做了个app始终弄不出安装包来,后来重装 VS 才发现这个安装包博大精深啊,什么加密啊,安装环境监测啊,用户自定义安装啊,回滚啊,安装目录选择啊,安装前校验啊,数据压缩啊,安装进度跟踪啊,检测以往版本修复或卸载啊......

6.写程序就是一个迭代,永远达不到一个真值,只能在两次迭代的结果相差一个足够小量是停止,认为这是一个解

关于未来的改进(可能是很久以后的事情了):

1. 数据访问还可以改进,可以考虑用 IQueryable 类型进行复用;

2. 界面有待改善

3. Controller 作用有待改善,BL去掉用多个Factory代替

4.记录不能分组

5. 异常处理问题

6.数据访问可以考虑用一个通用的借口隔离开,IDataAccess,factory只调用接口不调用数据访问类,方便数据访问扩展到多种不同的存储方式

7. 导入导出

暂时就这么多,到时候再加。

更多电话本小程序开发完成及感想相关文章请关注PHP中文网!

推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文介绍如何在 Unity 的 XML 配置文件中,将参数传递给自定义生命周期管理器的构造函数。我们将详细探讨 CustomLifetimeManager 类的实现及其配置方法。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 本文探讨如何利用人工智能算法自动区分网页是详情页还是列表页,介绍具体的实现思路和技术细节。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • C# LiNQ 查询 join连接
    C# LiNQ 查询 join连接 ... [详细]
  • 本文介绍了如何在C#应用程序中有效隐藏SQLCMD命令行窗口,确保程序运行时不会弹出黑色命令提示符窗口。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文探讨了如何在C# WinForms应用程序中将带有格式(如粗体、下划线等)的RTF文本粘贴到RichTextBox控件中,并确保粘贴后的文本保持原始格式和着色。我们还将介绍一些优化方法,以提高处理效率。 ... [详细]
  • 本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
author-avatar
谭宏景
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有