软件工程

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

2
如何正确归类于MIT许可下发布的软件的作者?
我已经修改了MIT许可项目的源代码,并且还向其中添加了新类。如果我错了,请纠正我,但我认为在许可证上方添加我的版权声明并删除另一份许可证是合法的。但是我应该如何归因于先前的作者呢?我应该使用单独的文件吗?我还修改了一些HTML文件,这些文件中没有许可证或版权声明。我是否必须以不同的方式处理它们? 我的问题与这个问题不同,因为我还修改了我要扩展的项目的某些文件。 更新资料 尽管删除版权声明的建议听起来很怪异,但是当我第一次发布此内容时,我想到的是,如果我在他们的代码中添加了恶意内容,则作者不承担任何责任。由于MIT许可证包含免责声明,因此这应该不是问题。

6
在C语言中,代码复制是否必不可少?
我是C的新手,我想知道在编写通用数据结构和C时,代码重复是否必不可少? hash map例如,我可以尝试编写一个通用实现,但是我总是发现最终结果很混乱。我还可以针对此特定用例编写专门的实现,使代码清晰易读,易于调试。后者当然会导致某些代码重复。 通用实现是规范,还是针对每个用例编写不同的实现?

7
我应该加密数据库中的数据吗?
我有一个客户,我将为此目的做一个有关患者护理,管理患者,咨询,历史记录,日历以及有关此内容的Web应用程序。 问题在于这是敏感数据,患者病史等。 客户坚持要在数据库级别加密数据,但是我认为这会降低Web应用程序的性能。(但也许我不必为此担心) 我已经阅读了有关健康问题的数据保护的法律(葡萄牙),但是对此并不十分明确(我只是问他们这个问题,我在等待他们的回应)。 我已经阅读了以下链接,但是我的问题不同,是否应该加密数据库中的数据。 我在加密数据时预见到的一个问题是,我需要一个密钥,这可能是用户密码,但是我们都知道用户密码的方式(12345等),并生成我必须存储的密钥它在某个地方,这意味着程序员dba,无论可以使用它什么,对此有何想法? 即使向用户密码添加随机盐也无法解决问题,因为我可以随时访问它,因此可以解密数据。
16 php  mysql  encryption 

3
如何在PHP和MySql中处理货币值?
我继承了在MySQL数据库之上用PHP编写的大量旧代码。我注意到的是该应用程序doubles用于存储和处理数据。 现在,我遇到了许多帖子,提到double由于四舍五入的错误,它们不适合货币操作。但是,对于如何在PHP代码中处理货币值并将其存储在MySQL数据库中,我尚未找到完整的解决方案。 在专门用PHP处理资金时,是否有最佳实践? 我正在寻找的东西是: 数据应如何存储在数据库中?列类型?尺寸? 正常的加,减数据应如何处理。乘法还是除法? 我应该什么时候取整值?舍入多少舍入(如果有)? 处理大货币值和低货币值之间有区别吗? 注意: 一个非常简化的示例代码,说明了我在日常生活中可能会遇到的货币价值(为简化起见,忽略了各种安全问题。当然,在现实生活中,我永远不会像这样使用我的代码): $a= $_POST['price_in_dollars']; //-->(ex: 25.06) will be read as a string should it be cast to double? $b= $_POST['discount_rate'];//-->(ex: 0.35) value will always be less than 1 $valueToBeStored= $a * $b; //--> any hint here is welcomed $valueFromDatabase= $row['price']; //--> price …

9
如何促进代码重用和文档编制?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 作为大约10个以上开发人员的团队负责人,我想促进代码重用。我们编写了很多代码-在过去几年中,很多代码都是重复的。现在的问题是,其中许多代码只是其他代码的重复或它们的微小变化。 我已经开始了关于如何将代码制成组件的运动(讨论),以便可以将它们重新用于将来的项目,但是问题是,我担心那些不了解组件的新开发人员或其他开发人员会继续前进,并且写自己的东西。 无论如何,有没有提醒开发人员重用组件/改进文档/为基础组件做贡献,而不是复制现有代码并对其进行调整或编写自己的代码? 如何使组件易于发现,易于使用,以便每个人都可以使用它? 我认为每个开发人员都知道可重用组件的好处,并想使用它们,只是我们不知道如何使它们可被发现。同样,开发人员在编写代码时,知道应该编写可重用的代码,但缺乏这样做的动力。
16 code-reuse 

5
在C#界面中使用关键字“使用”
当我使用C#编写一些代码并使用Visual Studio 2010定义接口时,它总是包含许多“使用”语句(如示例中所示) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestEngine.TestNameSpace { interface ITest1 { bool testMethod(int xyz); } } 我想知道这些是做什么用的,以及它们是否真的必要。我可以省掉这些吗?仅当我在界面说明中使用这些部件时才需要它们吗?

3
专用线程锁定对象的命名约定
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 这是一个相对较小的问题,但我无法找到官方文档,甚至找不到关于它的博客意见/讨论。 简而言之:当我有一个私有对象,其唯一目的是为私有服务时lock,该对象该如何命名? class MyClass { private object LockingObject = new object(); void DoSomething() { lock(LockingObject) { //do something } } } 我们LockingObject在这里应该命名什么?还不仅要考虑变量的名称,还要考虑变量在锁定时的代码外观。 我看过各种示例,但似乎没有可靠的建议: SyncRoot(和的各种变体形式_syncRoot)的用法很多。 代码示例: lock(SyncRoot),lock(_syncRoot) 这似乎受到VB的等效SyncLock语句,SyncRoot某些ICollection类上存在的属性以及某种SyncRoot设计模式的一部分的影响(这可能是一个坏主意) 在C#上下文中,不确定是否要使用VBish命名。更糟糕的是,在VB中将变量命名为与关键字相同。不知道这是否会引起混乱。 thisLock并lockThis来自MSDN文章:C#lock语句,VB SyncLock语句 代码示例: lock(thisLock),lock(lockThis) 不知道这些名称是否仅出于示例目的而最少命名 如果我们在static类/方法中使用它,那有点奇怪。 编辑:关于锁的Wikipedia文章也使用此命名作为其示例 PadLock(不同大小写的)的几种用法 代码示例: lock(PadLock),lock(padlock) 不错,但是我唯一的牛肉就是它毫无意外地调用了物理 “挂锁” 的图像,而我倾向于将其与抽象线程概念无关。 根据锁定意图命名锁定 代码示例: lock(messagesLock),lock(DictionaryLock),lock(commandQueueLock) 在VB SyncRoot MSDN页面示例中,它包含一个simpleMessageList带有私有messagesLock对象的示例 …

3
将更改从master转移到我的工作分支?
我们两个人在做某事。我们正在使用这种分支结构 主 dev-A dev-B 我们俩都在单独的分支(dev-A,b)上工作,并且每当完成时-我们将更改推广到master。 但是这样做的缺点是我们无法获得其他开发人员所做的更改。一切都存在于主树中-但是我们无法获得其他开发人员所做的最新更新。 有没有办法解决这个问题,还是我们应该更改分支结构(按功能)?
16 git 


2
编译器上的许可证是否有先例,限制了可以使用它的开发类型?
最近,一项令人slip目结舌的事情是,用于Delphi XE3的新EULA将禁止使用专业版进行客户端服务器开发,而无需额外购买客户端服务器许可证包。这并不是说专业版将缺少这些功能,但是许可证将特别禁止开发人员将编译器用于特定类别的开发,即使使用第三方或自行开发的解决方案也是如此。 所以我的问题是,是否有编译器或类似创意工具的先例禁止您使用它进行工作。特别是商业授权的“专业”工具,例如Delphi XE3。另外,这样的限制是否在法律上可以执行? 我知道过去曾经有教育版或简化版工具限制了它们在商业上的使用,但这些工具并没有作为“专业”工具出售。我也知道,许多计算软件和设备都会有免责声明,称它不用于“生命维持设备”或“核能”,但更多的是避免责任而不是禁止活动。 好像我记得Microsoft在FrontPage中设置了一个限制,即您不能使用它来创建一个对Microsoft反映不佳的网站,但是他们撤消了该限制,然后才能对其进行合法测试。 更新:由于公众的抵制,EULA在产品出厂前已被下架。
16 licensing  delphi  eula 

3
仅使用代码注释的代码审查是一个好主意吗?
前提条件 团队使用DVCS IDE支持注释解析(例如TODO等) 诸如CodeCollaborator之类的工具预算昂贵 诸如gerrit之类​​的工具过于复杂,无法安装或无法使用 工作流程 作者在中央回购功能分支上的某个位置发布 审阅者获取它并开始审阅 如果有任何问题/评论,请创建带有特殊标签的评论,例如“ REV”。此类标签不得在生产代码中-仅在审核阶段: $somevar = 123; // REV Why do echo this here? echo $somevar; 当审阅者完成评论后,它只会发送愚蠢的消息“ comments”并向后推送 作者将功能分支拉回并以类似方式回答评论或改进代码并将其推回 当“ REV”评论消失时,我们可以认为,该评论已成功完成。 作者以交互方式为功能分支重新设置基础,挤压功能分支以删除那些“注释”提交,现在可以合并功能以开发或进行任何成功的内部检查后通常可以采取的操作 IDE支持 我知道,自定义注释标签可以在Eclipse和Netbeans中使用。当然,它也应该属于blablaStorm家族。 问题 您认为这种方法可行吗? 你知道类似的东西吗? 有什么可以改进的吗?

6
垃圾收集器如何防止每次收集都扫描整个内存?
一些(至少是Mono和.NET的)垃圾收集器具有它们经常扫描的短期存储区域,以及具有次要扫描频率的辅助存储区域。Mono将其称为托儿所。 为了找出可以丢弃的对象,它们扫描从根,堆栈和寄存器开始的所有对象,并处置所有不再被引用的对象。 我的问题是,它们如何防止所有使用中的内存在每次收集时都被扫描?原则上,找出不再使用哪些对象的唯一方法是扫描所有对象及其所有引用。但是,这将防止OS换出内存,即使应用程序未使用它,也感觉需要进行大量工作,对于“ Nursery Collection”也是如此。感觉他们并没有通过使用托儿所而获得太多收益。 我是否缺少某些东西?或者垃圾收集器实际上是在每次收集对象时扫描每个对象和每个引用吗?

4
我是否应该选择带有或不带有私有字段的属性?
我现在使用的代码库具有使用私有字段和公共属性的约定。例如,大多数类的成员定义如下: // Fields private double _foo; private double _bar; private double _baz; // Properties public double Foo { get{ return _foo; } set{ _foo = value; } } public double Bar { get{ return _bar; } set{ _bar = value; } } public double Baz { get{ return _baz; } …
16 c#  coding-style 

5
配对编程和ISO 27001
我一直在eXtreme编程团队工作,并且在Windows环境中进行结对编程已有7年以上。当我们第一次开始执行此操作时,某人将使用其Windows凭据登录,因此,对该域用户的所有对域资源(尤其是版本控制)的访问都应负责。最终,我们发展为特定配对站(例如,pairA,pairB,PairC等)的窗口配对帐户。所有开发人员都知道这些帐户的密码。通过在提交过程中将程序员的姓名缩写写在注释中,可以实现提交(签入)的责任。 到目前为止,这对我们来说还算不错,但是我公司目前正在通过ISO 27001审核,审核员将其标记为风险。我有许多可能的解决方案,例如为每个配对组合创建一个配对帐户,但我真的很想知道是否有人遇到过这个问题以及他们如何解决? 审核员可以接受哪种解决方案?

10
在算法编程方面,Python优于C
我一直在研究一些算法,并一直在研究SPOJ.pl TopCoder等网站。我发现程序员通常在大多数算法编程竞赛中都喜欢C或C ++。 现在,我最近遇到了一些麻烦。我对C和Python都了解一些,并且在尝试编写代码时,对于大多数算法,我似乎更喜欢Python而不是C。每当我坐下来写CI的代码时,大约15分钟后就放弃了,因为我觉得它太麻烦了并且倾向于使用python。传递矩阵指针等似乎浪费了我实际上可以用来思考算法本身的时间。 现在,我知道并且听到很多人说C是一种非常重要的语言,并且是许多程序员的后援。 我想知道的是,我的这种方法是否有任何缺点/后果/缺点等。 这不是Python与C的争论。从长远来看,这个关于易用性而不是C首选python的特定实践将如何影响我或任何其他程序员/计算机科学家的问题。 我很乐意听到在行业中使用过这些语言的人,以及/或者开发大型软件/库等的人。

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.