我的PHP代码中使用的SQL数据库的数据来自非程序员制作的excel文件。当我无法解释我使用其excel文件时遇到的问题时,我通常会尝试对其进行编码。这导致我的一些漂亮的代码。有没有其他人有这方面的经验?试图对其他人进行编码通常会更好吗?还是坚定要求更强大的表格结构?与非程序员妥协
与非程序员妥协
回答
如果您决定要坚定并需要更健壮的表格结构,您需要为非程序员提供清晰,简洁,明确的文档以及良好的错误报告工具,以便他们能够更快速很容易弄清楚他们什么时候发生了错误以及它是什么。没有什么比让别人向你大喊“你需要这样做,或者程序不能工作”(甚至是说得很好但很坚定),然后三个月后不得不再次完成任务如果不回头问程序员,就无法弄清楚标准是什么。
因此,有时只是对不良数据进行编码比较容易。它还有助于使您的程序更加灵活和强大。但是如果你开始向后弯腰去做,那么确保非程序员检查错误是否容易,而且信息是清晰明确的,并且有关于他们所期望的信息的良好文档为输入。
你应该要求数据是正确的。不要对最终错误的东西进行编码。
作为一名SQL专业人员,我可以向你保证这是完全正常的。我经常不得不面对数据库设计和查询工作不佳的C#开发人员。哎呀 - 我不得不处理那些做得不好的SQL专业人员。 (并且可以承认过去也做得不好)。
我会尽量鼓励学习和自我完善的文化。寻找重构的机会,并尝试安排一个固定的时间(每月几天)进行重构,假设你有适当的测试以确保功能实际上没有改变。
这取决于,谁的时间更有价值?这并不像你想象的那么直截了当。最后,这是一个商业决策,而不是技术问题。
如果你有10,000个用户,用户的时间可能更有价值,你应该尽可能地接受代码,因为这样可以节省时间。
- 如果您的应用程序是公开的,这是一个竞争优势:是用户友好的。
- 如果您的应用程序是内部的,这是成本控制:总拥有成本。
如果你有5个用户,他们是不是特别重要,继续前进,任何你喜欢的需求,它会带他们更少的时间在总体上解决他们的数据比它会为你的代码周围的的问题。
如果你有1个用户,而且是首席执行官,那么你最好是适应,因为他们的时间比你的更有价值。
请记住,您对“不良”数据编码得越多,您就越有可能引入错误,这最终会在一定程度上影响您的所有用户。我认为问题在于如何界定用户友好型和自杀型之间的界限 也许可能需要手工编辑excel输入,而不是编码数据 - 在这些情况下手工工作经常被忽略。 – DaveC 2010-01-04 00:58:01
你们都可以同意一种标准格式,并且同意如果数据不是以这种标准格式(如果它符合格式,它不会被导入到db中)会发生什么。
有多少用户向您提供数据?验证excel文件格式的工具是快速获胜吗?用户可以验证他们的文件,并在任何行或列不符合标准格式时通知他们。
到目前为止,曾有一位客户请我遵循一套结构,并向他解释说,特别需要这种结构,因为该程序已经设定了一些遵循的规则。 (毕竟他是从excel管理的CSV文件)。
围绕它进行编码只会成为你的噩梦。只要同意像拉斯说的标准就可以了。
您应该提供一个清晰的规范或接口,并且只接受根据该规范的数据。
在某些excel模板的情况下,您应该尽可能地为数据输入端的人尽可能地做到这一点。这可能涉及锁定行,为定制GUI提供宏以便于输入等。
您可能想要求一些比CSV更简单的方法。
如果可以,您应该尝试在导入到数据库之前尽可能地验证数据。
当然,解决这些问题并不是一个好主意 - 而且听起来像浪费了宝贵的编码时间。
顺便说一句 - 这似乎是Tips for communicating with non programmers(尽管也许措辞有点不同)的一个骗局。
是的,你应该要求正确的数据。
但是......你可以帮助他们。创建一个工具来验证他们可以使用的数据,然后才能找到您。
- 1. 不使用的NSLog妥协测试人员安全
- 2. 问题与协调程序
- 3. .net服务器控制性能妥协
- 4. 非程序员指导编程
- 5. 有什么不妥以下Prolog程序
- 6. 归档Python脚本非程序员
- 7. 非程序员的版本控制
- 8. 解释代码 - 非PHP程序员
- 9. 非程序员的报告作者?
- 10. 与ImageIO的非小程序
- 11. 你如何向非程序员发布Clojure程序?
- 12. 你会如何向非程序员解释演员?
- 13. Ruby程序员与图形设计师的协作:最佳实践?
- 14. 如何实现与改造阻止客户有限动员和协同程序
- 15. 在非PostgreSQL中为非程序员启用JDBC
- 16. 协调员布局与回收+按钮
- 17. 妥协的设计和代码质量与现有模块集成
- 18. 类别与非正式协议
- 19. 什么协作工具可以有效地与非技术人员合作?
- 20. IT经理/程序员是否有很好的专业协会?
- 21. 如何将领域驱动设计引入协程序员?
- 22. 在协作中为程序员写书的管道
- 23. 图像调整大小,但没有任何妥协在DPI?
- 24. 我们如何才能在Tomcat和Websphere之间做出妥协?
- 25. 反复加密(随机填充+ const int32) - 妥协秘密?
- 26. 架构少SQL数据库表 - 实际妥协
- 27. 内部类型是否妥协了良好的API设计?
- 28. 如何查找名词和使用NLP妥协singularize
- 29. 在非MonoBehaviour类中使用协程
- 30. 与多个程序员结合编码
您在此之前发布此相同的主题在这里:http://stackoverflow.com/questions/1996752/tips-for-communicating-with-non-programmers – dmckee 2010-01-04 00:42:16
相同的主题,不同的问题。早些时候,我在谈论有效的沟通。在这里,我问的是当有人给我发送一张不理想的表格时,在哪里画线。 – Brian 2010-01-04 00:45:26
他们完全一样。每当你不画线时,你的交流就非常强烈。 “这不会吸太多*太多了,给我更多的喜欢它”,现在你可以选择你想努力工作以节省他们的努力了。 (对此并不持怀疑态度:有时候值得接纳它们,有时候不是...... – dmckee 2010-01-04 00:53:29