软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

8
向各种语言实现中添加Unicode标识符支持有什么意义?
我个人发现阅读代码充满了Unicode标识符令人困惑。在我看来,它还阻止了代码的轻松维护。更不用说所有译者的作者为实现这种支持而付出的所有努力。我还不断注意到各种语言实现的(缺点)缺点列表中缺少(或存在)Unicode标识符支持(确实很重要)。我不明白:为什么要这么关注?
14 unicode 

4
为什么可以使用传统的手动测试时使用phpunit
当我制作一个Web应用程序时,我会在浏览器上测试我的作品,以查看是否收到任何错误并进行修复。我已经完成了复杂的应用程序,并且以这种方式进行的测试非常简单快捷。我已经在YouTube上观看了许多有关phpunit的视频,但找不到目的。为什么这个库有用?phpunit是否更适合蛋糕框架或zend之类的PHP框架?我不使用任何框架,只是核心php。phpunit对我有用吗?如果是,怎么办? 也有xdebug,但我不确定是否相关。

8
一种实用的方法来存储几乎没有变化的“大量”数据?
从预先计算的查找表或其他方面考虑。在什么时候使用数据库而不是对应用程序中的值进行硬编码更有意义?这些值不会改变,并且很好地与维护开发人员隔离开来。100个值,1k,10k,100k?我想存储约40k值。现在,这是机器生成的switch语句(VS2010不满意)。 编辑: 如果有人好奇,这就是我的处理方法:我的数据可存储在两个100k元素的浮点数组中,所以我就是这样做的。大约花了20秒钟来生成数据,因此我做了一次,然后使用BinaryFormatter将其序列化为嵌入式资源。在应用程序启动时,解压缩数据大约需要5毫秒,并且比我正在替换的数据库实现(这些硬编码的值之前存储在其中)的性能要好45,000倍。

9
Java认证对于架构师角色重要吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我想知道多少Java认证(SCJP,SCWCD和其他认证)对于架构师职位很重要。如果一个人在Java开发方面拥有良好的经验,并且想要在架构师级别上追求自己的职业,那么你们是否认为他需要获得其CV认证。他是否从未担任过首席开发人员角色? 如果您进行我的建筑师职位面试。我曾在多个团队工作过5年,担任过Java Web开发人员。切勿领导任何人。我的简历上有认证徽章。 开发人员如何使自己的职业道路成为团队中的建筑师?

1
对于嵌入式系统项目,包含东南亚字符集的绝对最低要求是什么?
我为一家已经开始将嵌入式计算机系统集成到我们生产的产品中的公司工作。我们拥有种类繁多的产品,它们遍布全球。此外,我们还设计了一些集成板,可以根据已刷新到系统的固件来满足多种目的。这样,我们不必为各种产品重新设计计算机硬件-我们要做的就是重写固件层来满足特定产品的需求。 由于这些硬件限制,更改我们的硬件需要采取一些行动,但是编写新软件要简单得多。 我们的产品之一有一个我们以前没有实现过的新要求,那就是需要用户输入文本。 当前,我们已经能够在资源中存储国际文本,并且只有必要的字体字符才被编译为位图图像。这意味着我们已经能够在最小的空间中存储像中文和日语文本这样的高表意语言,因为我们只使用了整个语言集中很小的一部分。 由于此新产品将要求我们的用户输入文本,因此我们将必须实现广泛的字符集。作为主要的PC开发人员,我对ASCII,Unicode,UTF-8等非常熟悉,但是,由于我们板上的FRAM数量有限,因此无法实现所有这些语言的完整字符集存储字体数据。 我的管理层希望能够使用最少的字符集来用于高度表意的语言。我相信日语(平假名?)也有语音字母。汉语,韩语,越南语等语言也有相似的语音字母吗?我很确定该问题的答案是“绝对,不是”,但这是一个值得询问的问题。 管理层提出了“软”要求,即我们只能使用大约8,000个字符的有限字符集来覆盖所有常用的主要语言。如果这不可能,我们需要根据有限的硬件资源寻找某种形式的替代方法来满足我们的需求。 我确信这个问题以前必须已经解决。是否有人需要在这样的约束下工作,同时又需要广泛的字体和字符编码系统的经验?如果是这样,您可以提供哪些智慧?

6
如何仅实现一部分接口
在OOP中进行开发时,有时接口/协定是由您不能更改的库提供的。我们将此接口称为J。 现在,您有了一个类A的对象,该对象使用实现此接口的对象。内部仅需要接口定义的一小部分。我在项目期间创建了一些对象类(让我们称其中一个类型为D),因此在接口J内实现所有操作都会产生开销。 我想在接口J中实现功能的一个子集,但是到目前为止,我的解决方案并不令我满意: 实现J的各个方面,然后抛出“ notImplementedExceptions”会误告知用户我的对象:看来我类型D的对象确实符合接口J,但它们与我的对象的其他使用者(接受实现接口的对象) J)不能依靠我对象的完整性。 尽管接口J与我自己的接口完全兼容,但是实现新定义的接口会禁止我使用仅实现接口J的对象。 让我的自定义对象实现接口J会产生很大的开销,因为它们不需要所有这些功能。 当我能够更改接口J时,我将创建一个具有接口J功能子集的“超级接口” K,并使接口J从接口K继承。但是我不能更改接口J。 什么是此问题的面向对象的解决方案?最好的解决方案是否仍在实现“ Just”接口J?还是有OOP方式可以在不更改接口的情况下“超类化”接口?

6
C#函数参数使用什么命名约定
在某些情况下,在Parameter中传递的名称将被转换为新的类型,但是Passed对象的名称应保持相似。对于类属性,我们可以使用此运算符,但是函数中的局部变量呢?什么编码约定被广泛使用。 例, void MyFunc(BaseClass myPara) { DerivedClass _mypara = (BaseClass)myPara; } 或相反 void MyFunc(BaseClass _myPara) { DerivedClass mypara = (BaseClass)_myPara; } 或其他任何约定
14 c#  naming 

4
如何对漏洞严重性进行分类以补充我们的优先级分类?
在我目前的工作中,我们有低,中,高优先级的错误。 低优先级错误是不会停止发货或对任何用户造成实际麻烦的小错误。 中优先级错误会导致一些内部用户麻烦,但有已知的解决方法。 高优先级错误是客户会看到的问题,可能会损坏数据或使系统崩溃。 如何对漏洞严重性进行分类以补充我们的优先级分类?

6
您如何编写单元测试用例?
有时我最终会为其他开发人员编写的代码编写单元测试用例。有时候我真的不知道开发人员要做什么(业务部分),而我只是操纵测试用例来获得绿线。这些事情在业界正常吗? 正常趋势是什么?开发人员是否应该为自己编写的代码编写单元测试用例?

12
为什么我们继续使用CSV?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 为什么我们继续使用CSV? 我最近转而使用卫生领域,尽管在数据传输标准方面做得很出色,但是所有数据传输都采用CSV格式,既可以报告给外部组织,也可以用于在实施新系统时进行数据迁移。 不幸的是,使用CSV导致无休止的重复同样的愚蠢错误,同时也浪费了开发时间。(转义错误,无法处理空字段等) 我知道我们可以做得更好,并且JSON和XML之间的任何内容(取决于实例)都可以。(大多数情况下,这是从一个MS SQLserver 2005到另一个的数据!) 我觉得好像每次看到这种情况时,我实际上都是在看着一个开发人员在浪费别人的时间。 那么,为什么我们要保持轴心呢?我们什么时候停止?

3
如何模拟导致异常的事件来测试try / catch块?
我了解异常如何工作以及如何在C#中捕获和处理异常,但是我如何模拟可能导致异常的事件以确保正确捕获异常?例如,是否可以在一种可以模拟网络问题,数据库问题等的测试平台上运行应用程序?异常的性质似乎很难重现,因此很难确保您的代码可以应对它们。 尽管我主要使用C#/。NET / Visual Studio开发,但是与其他语言有关的答案或资源可能会很有用。
14 c#  testing  exceptions 

5
面向架构(结构)与面向特征的项目结构
我参与的该项目具有面向架构的项目的文件/文件夹结构: Root |____ Node1 |____ Event Handlers | |___ <all event handlers of project> |____ Events | |___ <all events of project> |____ Request Handlers | |___ <all request handlers of project> |____ Requests | |___ <all requests of project> |____ ... 从系统的体系结构观点来看,这是显而易见的(已由开发团队提出)。 它是设计人员团队提出的面向功能的结构: Root |____ Feature #1 |____ Event …

5
没有Dispose()SqlConnections有多糟糕?
就个人而言,如果我在使用语句中不放置实现IDisposable的ADO对象,就会陷入蜂巢。但是根据我目前的合同,我发现他们自己的企业框架“数据访问提供程序”代码不会1)实现IDisposable和2)在任何时候都对它使用的任何东西调用Dispose()。用户一直在抱怨大量使用此框架进行数据访问的Winforms应用程序中的性能问题,尽管代码中还有很多其他问题可能会影响性能,但是这只是让我大叫,甚至更多。比其他人低垂的果实。 因此,除了说出“有某种原因而丢弃在这里,要使用它”之类的话,我还能告诉这些人说服他们这确实是真的吗?

3
DAO应该是单身吗?
我正在开发RESTful API,我认为为我的资源使用DAO会很方便,因为尽管我计划仅使用内存来存储它们,但是我不想对使用库的任何人敞开大门,如果他们决定使用DAO的数据库实现。 我的问题是DAO是否应为单例。如果不是,则该服务将具有DAO的实例,并且看起来大致如下: @Path("eventscheduler") public class EventSchedulerService { private IEventSchedulerDao dao = new EventSchedulerDao(); // in case a different implementation is to be used public void setEventSchedulerDao(IEventSchedulerDao dao) { this.dao = dao; } @Path("{uniqueName}") @GET @Produces(MediaType.APPLICATION_JSON) public Tournament getTournament(@PathParam("name") String uniqueName) { return dao.get(uniqueName); } @Path("create") @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public …

1
图像和其他资产的MIT许可证与知识共享
有人可以为我解决特定的许可混乱吗?我总是对软件许可的工作原理感到困惑。 我希望所有人都能以最少的限制(如果有)使用我的软件,并且没有保修。所以我只使用许可许可证(我选择了MIT许可证),然后写类似 该项目,包括所有文件及其内容,均根据MIT许可条款获得许可 有关详细信息,请参见LICENSE.txt。 在项目的自述文件中。 我对这对于项目的“工件”(辅助文件;实际上不是源文件的文件)如何工作感到困惑。我希望相同的许可条款适用于我的项目的每个文件,包括 构建系统/文档文件(MakefileS, CMakeLists.txt,Doxyfile等;实际上,我几乎可以肯定的上述条款适用于那些文件,不是吗?) HTML / JavaScript / CSS / XML / etc。文件(那些文件甚至被许可了吗?我不确定。我还希望人们检查它们,导出他们自己的版本,等等。) 图片和其他二进制资产(我希望人们能够在演示文稿等中使用它们)。 我见过人们对他们的项目进行双重许可。例如,源文件是根据MIT许可证授权的,图像是根据知识共享许可证之一授权的。他们为什么要这样做,但MIT许可证不够吗?我的意思是,许可证文本仅讨论“软件”。我不确定例如图像是否作为“软件”的一部分包含在内,尤其是这些图像是该软件的产品(例如,如果我想提供该软件能够产生哪种图像的示例)。还是他们? 如果该项目实际上不包含任何源代码?如果它只是一组(从我的角度来看,是有用的)配置文件,如果使用不当,会导致另一软件行为不正常并弄乱用户数据怎么办? 我真的很想提出一个通用的措辞,将其包含在我的每个项目中,并随即完成。另外,如果提出了有用的建议,并且我决定更改项目的许可条款,那么,如果我是唯一的贡献者,我可以这样做吗?考虑到该项目是根据MIT许可“获得许可”的。 通过问这个问题我感到自闭,因为我的项目都没有真正引起任何人的兴趣,但是当我想到这一点时,我总是觉得我需要动脑筋,所以如果有人能为我解决这个问题,我将感到非常高兴。
14 licensing 

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.