软件工程

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

7
不变的类在什么时候成为负担?
在设计用于保存数据模型的类时,我已经读过它对创建不可变对象很有用,但是到什么时候构造函数参数列表和深层副本的负担变得太大,您必须放弃不可变限制? 例如,这是一个不可变的类,用于表示命名的事物(我使用C#语法,但该原理适用于所有OO语言) class NamedThing { private string _name; public NamedThing(string name) { _name = name; } public NamedThing(NamedThing other) { this._name = other._name; } public string Name { get { return _name; } } } 可以构造,查询和复制已命名的事物到新的已命名事物,但是名称不能更改。 这一切都很好,但是当我想添加另一个属性时会发生什么呢?我必须向构造函数添加一个参数并更新副本构造函数;据我所知,这不是太多的工作,但是当我想使一个复杂的对象不可变时,问题就开始了。 如果该类包含可能包含其他复杂类的属性和集合,在我看来,构造函数参数列表将成为一场噩梦。 那么,什么时候一个类变得太复杂而无法改变呢?

6
如何防止客户看到用解释语言编写的代码?
我正在用Python构建一个相当复杂的解释程序。几个月以来,我一直在为大多数其他目的使用此代码,因此,我不希望我的客户能够简单地复制并尝试出售它,因为我认为这是值得的。 问题是我需要脚本在客户端付费的服务器上运行,因此有什么方法可以保护我机器上的特定文件夹免受root用户访问,或者使之只能使某个特定用途可以访问目录?操作系统是Ubuntu。

5
可以编译为Android Dalvik VM的功能语言吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我有一个适合功能编程方法的软件问题,但目标市场将是Android OS。我问是因为有些功能语言可以编译为Java的VM,但是Dalvik字节码!= Java字节码。 另外,您是否知道该dx实用程序是否可以智能地转换.class从Scala等功能语言生成的文件? 编辑:为了给社区增加更多帮助,并帮助我更好地选择,我可以对问题进行一些改进吗? 您是否在Dalvik中使用了任何其他语言?哪个? 我可能会遇到哪些“陷阱”(问题)? 性能可以接受吗?那样的话,我的意思是应用程序仍然对用户有所响应。 我从来没有做过手机开发,但是我在受限的设备上长大,并且我不幻想在该平台上使用非标准语言会产生成本。我只需要知道是否花了这么多钱,就可以将我的方法变成默认语言(即在OOP语言中应用功能原理)。

16
跳槽是保持工作和学习的最佳方法吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 抛开OSS或自学之类的工作以外可以做的任何事情,您是否认为跳职是不断学习新技能的好方法。 在这种情况下,我对跳槽的定义是每2-3年转移一次公司,甚至可能转移领域。 通过更改合适的工作,理论上您可以学习一种新的语言/框架,并接触其他知识领域。 快速更新:这不是我目前的情况,也不是我所遵循的方法。这个念头触动了我,我认为这是一个很好的问题。

9
开发人员应具有多少数据库访问权限?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 因此,我曾在许多不同的工作场所担任过开发人员,而我对数据库的访问级别也有所不同。我通常没有生产数据库访问权限。 大多数情况下,我可以访问测试数据库,但是它有所不同。有时我可以随意更改数据库和数据,但是通常还有其他安排。就像我可能只对数据具有读取权限。 我在一个由DBA团队管理数据库的地方工作,除非我们提交了带有sql脚本的表格以供他们“检查”,否则我们根本无法进行任何更改。他们通常与项目本身没有多大关系,因此在大多数情况下,只是按F5键即可。 老实说,我可以理解为什么需要锁定prod,但是我更喜欢在开发和测试环境中具有尽可能多的数据库访问权限。我认为大多数开发人员都有能力了解数据库周围的情况。但是我想听听意见吗?开发人员应具有多少数据库访问权限?我们可以信任不破坏任何东西吗?

12
学习JS时,您的Aha瞬间是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 您还记得学习JavaScript的时候吗?您突然“明白”的时刻是什么时候?(例如,我的CSS瞬间是当我了解盒子模型时...) 我问的原因是我学习JS已有6周的时间,但我仍然感到很困惑。这是我最近在SO上读到的一些引言: “ ..函数的作用类似于值,因为方法是具有函数值(也是对象)的对象的属性。” 我很好奇,如果您一开始也感到困惑,那是什么使您理解它。 (我正在阅读Sitepoint的“ Simply JavaScript”,《 Eloquent JavaScript》这本书,并遵循Lynda的Essential JavaScript教程。我没有任何编程经验,并且数学方面太糟糕了;) 谢谢!

10
C#代表在现实世界中的使用
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我认为我在概念上理解C#代表,但是,我一直在努力寻找一个有用的现实示例。您能否提供一些答案,详细说明在实际应用程序中如何使用C#委托以及它们使您能够解决哪些问题。
16 c#  delegates 

10
GoF设计模式-您实际使用哪些模式?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在尝试对设计模式领域的同事进行教育。最初的“四人一组”模式有些神秘,所以我想知道是否有所有程序员都应该知道的“基本”模式子集。当我浏览列表时,我想我可能已经使用过- 抽象工厂 工厂方法 辛格尔顿 桥 正面 命令 您实际上在实践中使用了哪些?您将它们用于什么? 链接给那些想要模式列表的人

6
从过程代码转换为面向对象的代码
我一直在阅读“有效地使用遗留代码和清除代码”,其目的是学习有关如何开始清除大型ASP.NET Webforms应用程序的现有代码库的策略。 该系统自2005年起问世,此后进行了许多增强。最初,代码的结构如下(并且仍然在很大程度上以这种方式进行结构化): ASP.NET(aspx / ascx) 代码隐藏(C#) 业务逻辑层(c#) 数据访问层(c#) 数据库(Oracle) 主要问题是该代码伪装成面向对象的程序。它实际上违反了两本书中描述的所有准则。 这是业务逻辑层中典型类的示例: public class AddressBO { public TransferObject GetAddress(string addressID) { if (StringUtils.IsNull(addressID)) { throw new ValidationException("Address ID must be entered"); } AddressDAO addressDAO = new AddressDAO(); return addressDAO.GetAddress(addressID); } public TransferObject Insert(TransferObject addressDetails) { if (StringUtils.IsNull(addressDetails.GetString("EVENT_ID")) || StringUtils.IsNull(addressDetails.GetString("LOCALITY")) || …

1
域驱动设计对于不是那么复杂的域有用/有用吗?
在评估工作中的潜在项目时,我建议对它的对象模型使用领域驱动的设计方法可能会更有利。该项目没有一个过于复杂的领域,所以我的同事把这个扔给了我: 有人说,DDD在存在复杂域模型的情况下是有利的(“ ...只要我们在复杂,复杂域中运行,都适用” Eric Evans)。 我所迷惑的是-您如何定义域的复杂性?是否可以通过域模型中聚合根的数量来定义?对象交互中的域是否复杂? 我们正在评估的领域与在线发布和内容管理相关。

9
如何判断软件是否高度耦合?
我对术语“高度耦合”很熟悉,但是很好奇是否存在迹象(代码气味)可以表明代码高度耦合。我目前正在使用Java EE,但这可以应用于任何语言。 编辑: 如果有人感兴趣,这篇文章听起来很有帮助:追求代码质量:当心这对夫妇!(IBM)

5
Python开发人员在学习Ruby时应该知道什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我从事Python程序员工作大约18个月,其中包括一次实习和一些附带项目,我认为自己对这种语言非常满意。 但是,在编程领域似乎对Ruby有很多关注,但对Python则不再关注。 因此,在学习Ruby时,是否会有Python风格的东西只是Ruby中的不良做法?我应该注意什么,应该避免什么?

9
职业建议:编程语言理论博士学位[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 我对编程语言的理论非常感兴趣,并打算在该主题上申请博士学位,但我想对研究生教育后的职业有更多了解。除了当教授,我还能获得什么职业?

3
学习设计模式的推荐顺序?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 我不禁注意到那里存在的设计模式数量。 有人对我应该学习的订单有建议吗?还是我应该随机选择它们? 到目前为止,我唯一知道的是单例。

4
与我的第一个公司客户打交道时,我从哪里开始?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我最近开发了一个桌面客户端,可以自动执行在线研究中涉及的许多工作。我在2-3个小时内开发了此工具,并将一个小时的工作量减少到大约5分钟。软件具有一定的可见性,并且组织中的一些高层对节省的时间和精力感到兴奋。现在,可能是公司有兴趣向公司的每个销售人员分发软件,甚至可能想从我这里购买。 我从来没有遇到过可能将我的软件出售给公司客户的情况。我只从事个人项目或为雇主开发内部软件。我不知道什么是公平价格,甚至不知道什么是公平的付款方式(例如,接受大笔付款以换取交付静态软件应用程序,签定进一步开发和维护合同是正常的吗?一段时间内该应用程序,还是什么?)。 我只是没有经验,不会为我提供了解如何应对这种情况的基础。我如何获得这些知识,以便做出明智的选择?

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.