Questions tagged «design»

有关通过软件设计解决问题和计划解决方案的问题。

2
分析与设计有何不同?
我相信大家都听过经理说“我们需要分析仪”或“我们需要设计师”。当我是.NET开发人员时,我几乎无法将分析器与设计人员(而非Web设计人员或UI设计人员)区分开。 谁是分析仪?谁是设计师?它们重叠吗?

6
我知道如何编程,如何学习编程,但是您如何/在何处学习如何正确制作系统?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 制作系统时,需要考虑很多事情,例如,基于Web的系统,用户登录并彼此交互,创建和编辑内容。现在,我必须考虑安全性,验证(我什至都​​不认为我100%地确定了其中的含义),“确保用户不要互相踩踏”(这是术语?),从而防止了许多错误确保数据库数据不会因意外情况而出现问题?所有这些我不知道如何学习或在哪里学习的东西,有一本书关于这种东西吗?就像我说的那样,编写代码和实际编写正确的代码之间似乎有很大的区别,知道我的意思吗?我觉得我目前的编程工作缺少我所描述的内容,以后我会看到它引起的问题,然后问题就很难解决了,因为存在数据并且人们正在使用它。那么,有人可以将我指向这类学习的书籍或资源或正确的编程子集吗? PS:随时纠正我的标签,我不知道我在说什么。 编辑:我假设我写的一些示例也适用于其他类型的系统,我只是不知道任何其他好的示例,因为我主要从事网络工作。

2
如何组织重复代码?
我的团队创建了很多一次性的Web表单。这些表格中的大多数仅发送电子邮件,而一些表格进行简单的数据库写入。 现在,每种形式都存在于Visual Studio Team Foundation Server中自己的单独解决方案中。这意味着我们有将近100个不同的表单项目,这使得保持一致性变得很困难。每种形式都是唯一的,因为字段是不同的,但是它们几乎都做相同的事情。 我希望以某种方式压缩这些内容,并且我确实可以使用一些指导。 我是否应该尝试在其中包含所有表单项目的情况下创建一个解决方案文件?尽管我可以创建一些帮助程序类来帮助进行电子邮件格式化等,但是没有很多管道代码。能够在项目之间共享CSS,JavaScript,控件和图像将非常有帮助。 既然我们是Microsoft商店,那么针对这种特定情况,通过Webforms使用MVC之类的东西有什么明显的好处?整个MVC的概念使我受宠若惊,但是如果该表格仅发送电子邮件,是否可以帮助我更有效地整理15字段数据收集表格?我想到的表单具有很多内置的逻辑,可以根据用户的响应显示和隐藏字段,并且似乎使用MVC和jQuery的效率较低。

5
如何实现RealNumber和ComplexNumber继承?
希望不是太学术... 假设我的SW库中需要实数和复数。 根据is-a(或here)关系,实数是复数,其中复数虚部中的b就是0。 另一方面,我的实现是,该子对象扩展父对象,因此在父对象RealNumber中,我将拥有实部,而子对象ComplexNumber将添加虚构图。 还有一种观点认为继承是邪恶的。 我记得像昨天一样,当我在大学学习OOP时,我的教授说,这不是继承的一个很好的例子,因为这两者的绝对值是用不同的方式计算的(但为此我们有方法重载/多态主义,对吗?)。 。 我的经验是,我们经常使用继承来解决DRY,因此,我们经常在层次结构中人工构造抽象类(由于名称不能代表真实世界中的对象,因此经常很难找到名称)。

2
评估是先在蓝天/原型项目上编写单元测试还是集成测试
我最近注意到的是,当我执行以下类型的项目时: 开始项目时 处理MVP /原型 添加未完全定义的功能 从事较小规模的项目 作为参考,我正在研究一个Python项目,该项目目前有大约1k行代码,包括一些注释和所有空格。 我发现首先编写集成测试,处理代码,然后对API进行某种程度的加固后,实际上可以轻松地添加单元测试。可以说,我可以在我的main函数上运行的测试类型比其他任何东西都更“端到端”。 这是因为当API发生相当快速的更改时,单元测试确实很烦人,而在与以上任何或大多数条件匹配的项目上工作时,通常就是这种情况。 这种方法是否是一种好的方法,并且在针对这些类型的项目做出是否首先从单元测试或集成测试开始的决策时应考虑哪些标准?在API更加巩固之前,我是否错过了对这类项目进行单元测试的价值?

1
创建一个好的问题陈述
<背景故事> 前几天,我在一家二手书店里买了一本叫做《代码完成》的书,因为我听说这是一本很棒的书,所以开始阅读。大约10页之后,我意识到自己对最近正在从事的项目感到有些愚蠢。在这一点上,我需要澄清一下:我没有工作,也不适合上学;它几乎是非正式的(尽管我偶尔也问过一些问题,但我也是唯一从事此工作的人)。我在中学时期,正在尝试创建一个软件。 长话短说,我直接进入了编码(现在我质疑当场就他的编码方式如何做出的一些决定)。因此,我正在尝试以正确的方式重新开始。 </背景故事> 好的,所以我正在尝试创建问题陈述,我想知道一些好的提示,以了解我是否有一个好的提示。Code Complete表示,这应该是非技术性的,并且从用户的角度来看,这是我试图做到的。任何建议,将使其更好。 据我所知,目前尚没有很好的方法来模拟大型复杂的量子计算电路,包括去相干,纠错,纠缠和经典计算机上的算法等功能,更不用说使用标准/井井有条的系统了。已知且易于访问。 抱歉,如果绝对如此,这是我第一次这样做。 编辑-草稿2: 我改写了评论和答案中的建议。 量子计算领域的理论家,研究人员和学生没有一种方法可以直接,高效地模拟和测试复杂的大型量子电路,而无需自己为应用创建代码。一个可以在流行的浏览器中运行的Web应用程序,其简单的界面可以准确地产生有关量子算法,纠错码,纠缠,退相干以及理想界面和实际界面的其他方面的结果,从而使专业人员和学生都可以测试他们的想法,并更好地了解量子计算领域。

2
在MVVM中,ViewModel或View应该负责创建新视图吗?
在我的WPF应用程序中,我想创建一个新视图。在ViewModel或Model中应该在哪里做? 该应用程序是一个(现在非常简单)单窗口形式的工具,带有单个“发送”按钮。如果选中其中一个复选框,则应弹出使用相同ViewModel的新窗口,要求用户提供一些其他详细信息。出于这个问题的目的,我们只考虑新窗口方法,而不考虑显示/隐藏面板之类的其他方法。 理想情况下,在View中应该没有任何代码。此外,由于View中没有任何逻辑,因此VM最初需要检查是否需要创建新视图,并且-在需要时-将这种责任退还给View,从而导致代码膨胀。 另一方面,在ViewModel中创建新视图违反了ViewModel不应该了解View的原则。 因此,在View或ViewModel中创建新视图更好吗?
11 c#  design  wpf  mvvm 

3
带有向导的网页的REST API设计
我有一个向导格式的网页。API的提交按钮将位于向导的第4步。但是,我希望输入的数据先存储在数据库中,然后再进行向导的下一步。我还希望REST API适用于具有单个选项卡的页面。 因此,我设计了API以采用查询参数action =草稿或提交。如果采取行动,则仅某些字段是必填字段。如果提交了操作,则所有字段均为必填。REST API服务层中的验证将基于查询参数完成。看来我必须在文档中明确指定if / else子句。这是RESTful设计的可接受形式吗?满足这些要求的最佳设计是什么?
11 design  rest 

3
什么时候应该修剪输入?
我正在学术界之外大量学习有关行业的知识。 我今天想到的一件事是削减输入。 一方面,我不希望用户/实现者不断收到意想不到的结果,因为它们的输入空间太大,因此我需要在每次函数调用后不断调整用户输入。 但是同时,如果我要在办公室内部创建一个供内部使用的API库,则尾随/前导空格可能对结果至关重要。 然后有一些实例,我不确定空格是否重要。 对我来说,最大的问题是我发现自己在代码中的任何地方都不断地调用.trim()。 是否有人对如何处理某些情况有任何技巧或经验法则?

6
实施SRP的实际方法是什么?
人们简单地检查班级是否违反单一责任原则的实用技术是什么? 我知道一个班级应该只有一个改变的理由,但是那句话在某种程度上缺乏真正实现这一改变的实用方法。 我发现的唯一方法是使用句子“……本身应该……”。其中第一个空格是类名称,第二个空格是方法(职责)名称。 但是,有时很难确定责任是否确实违反了SRP。 还有更多检查SRP的方法吗? 注意: 问题不在于SRP意味着什么,而是关于检查和实施SRP的实用方法或一系列步骤。 更新 我添加了一个明显违反SRP的示例类。如果人们可以以此为例来说明他们如何遵循单一责任原则,那将是很好的。 这个例子是从这里开始的。

3
为什么创建Android的ContentProvider?
标题总结了我的问题,但基本上我想理解的是,为什么Android设计人员希望需要与共享数据一起使用的应用程序使用Content Provider,而不是直接访问SQLite数据库? 我能想到的唯一原因就是安全性,因为某些文件只能通过某些进程来访问,因此Content Provider是网守,可以确保每个应用程序在允许对数据库文件的读取和/或写入访问之前都具有适当的特权。这是创建ContentProvider的主要原因吗?
11 design  android 

6
有针对编程的笔记本吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我知道工程纸存在,但是有没有公司为笔记/伪代码/设计制作程序员专用的笔记本? 纸张是我概述事情的首选方式,因此在我的工具列表中添加专用垫将非常有益。

6
出于隐藏成员的唯一目的而使用显式接口实现的充分理由是什么?
在对C#的复杂性进行的一项研究中,我遇到了有关显式接口实现的有趣文章。 While this syntax is quite helpful when you need to resolve name clashes, you can use explicit interface implementation simply to hide more "advanced" members from the object level. 对我没有经验的眼睛来说,允许使用object.method()或要求强制转换之间的区别((Interface)object).method()似乎是卑鄙的迷惑。文中指出,这将隐藏智能感知对象级别的方法,但为什么你会想这样做,如果没有必要,以避免名称冲突?
11 c#  design  interfaces 

4
这种调用函数的方式不好吗?
我有以下代码: public void moveCameraTo(Location location){ moveCameraTo(location.getLatitude(), location.getLongitude()); } public void moveCameraTo(double latitude, double longitude){ LatLng latLng = new LatLng(latitude, longitude); moveCameraTo(latLng); } public void moveCameraTo(LatLng latLng){ GoogleMap googleMap = getGoogleMap(); cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, INITIAL_MAP_ZOOM_LEVEL); googleMap.moveCamera(cameraUpdate); } 我认为通过这种方式,例如,我消除了了解LatLng另一门课中的内容的责任。 而且,您无需在调用函数之前准备数据。 你怎么看? 这种方法有名称吗?真的是不好的做法吗?

6
依赖注入的最佳定义是什么?
每次有人联系我,并要求我以概念性方式定义“依赖项注入”,并解释在软件设计中使用DI的真正利弊。我承认我很难解释DI的概念。每次我需要告诉他们有关单一责任原则,组成而不是继承的历史时。 任何人都可以帮助我解释为开发人员描述DI的最佳方法吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.