软件工程

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

13
编程是在竞逐低谷时的职业吗?[关闭]
在我看来,编程行业正在步入低谷。如果我们采取以下做法: 不花时间实施最佳实践 尽可能使用他人的代码(将自定义代码作为责任) 使用越来越高级的语言来提高生产力 基于GUI的开发“工具”,极大地简化了“编程”,并且不需要人们了解代码背后的内容 这些事情对我来说意味着我们正在努力变得像其他上班族一样。不需要技能(更容易更换)且需要预先建造的东西(较少的项目时间)符合雇主的利益。 我的意思是:a)技能与雇主的经济利益是否不符?b)如果存在,您如何减轻它以执行专业标准?

13
编写“好的代码”是什么意思?[关闭]
在这个问题中,我问一个不好的作家是否会妨碍您编写好的代码。许多答案都始于“这取决于您所指的好代码”。 看来“好代码”和“坏代码”是非常主观的。由于我有一个观点,所以可能与其他人的观点有很大不同。 那么编写“好的代码”意味着什么?什么是“好代码”?

18
语法在编程语言中真的重要吗?[关闭]
我的一位教授说“语法是一种编程语言的用户界面”,像Ruby这样的语言具有很好的可读性,并且还在不断增长,但是我们看到很多程序员都能用C \ C ++高效工作,因此程序员确实对语法很重要应该可以接受吗? 我很想知道您对此的看法。 免责声明:我不是要吵架。我认为这是一个很好的讨论话题。 更新:原来这是一个很好的话题。我很高兴你们都参与其中。


30
编程中有什么真的是邪恶的吗?[关闭]
因此,出现了很多问题,询问是X邪恶,是Y邪恶。 我的观点是,没有语言构造,算法或任何有害的东西,只有那些被滥用的语言。天哪,如果您看上去很努力,甚至还有goto的有效用法。 那么,在编程中是否存在绝对邪恶的东西,那在所有情况下都与最佳实践完全不兼容?如果是这样,那是什么?还是只是不好的程序员不知道什么时候合适? 编辑:明确地说,我不是在谈论程序员的工作(例如不检查返回码或不使用版本控制-它们是不良程序员做出的选择),我的意思是工具,语言,语句,无论是什么,坏...

15
您最喜欢什么版本控制系统?[关闭]
与实际确定“最佳”尝试相比,这更是一个讨论问题,因为这显然会因组织的需求而异。我对支持不同类别(集中式,分布式,开放式与专有等)的不同系统的论点感到好奇。 那么,您认为最好的版本控制系统是什么?



3
使用LISP和Haskell有什么优势?他们会让我成为更好的程序员吗?[关闭]
我知道Lisp和Haskell分别是逻辑和函数编程语言,但这到底意味着什么?它们与其他语言有何不同?我听说学习这些将使您成为一个更好的程序员并改善您的逻辑。这是真的,如果我学习Lisp或Haskell达到了能干的水平,我的编程会得到改善,并且我会更好地处理任何语言的问题吗?我只是想知道看看它们是否值得学习。这些语言在GUI和图形等领域是否有用,还是仅对控制台应用程序有用?
41 haskell  lisp 

8
为什么会有多种Unicode编码?
我认为Unicode旨在解决由于大多数先前尝试(ASCII等)中的地址空间较小(8位)而导致具有许多不同编码的整个问题。 为什么会有那么多Unicode编码?甚至是(基本上)同一版本的多个版本,例如UTF-8,UTF-16等。

7
什么时候进行事件轮询比使用观察者模式更好?
在某些情况下,对事件进行轮询是否比使用观察者模式更好?我担心使用轮询,并且只有在有人给我一个好的情况下才会开始使用它。我能想到的就是观察者模式比轮询更好。考虑这种情况: 您正在编写汽车模拟器。汽车是一个对象。汽车启动后,您要播放“ vroom vroom”声音片段。 您可以通过两种方式对此进行建模: 轮询:每秒轮询一次汽车对象,以查看其是否打开。打开时,播放声音片段。 观察者模式:将汽车设为观察者模式的主题。当它本身打开时,让它向所有观察者发布“ on”事件。创建一个新的声音对象来聆听汽车。让它实现播放声音片段的“ on”回调。 在这种情况下,我认为观察者模式会获胜。首先,轮询是处理器密集型的。其次,汽车启动时,声音片段不会立即触发。由于轮询周期的原因,最多可能有1秒的间隔。

3
如何协调Scrum中两个不同项目之间的开发人员时间?
我成为一个新成立的团队的Scrum Master,负责创建软件和维护其他已部署的应用程序。因此,基本上每个团队成员都有开发和运营任务。 在过去的几周中,我一直在观察他们的工作方式,我注意到团队在协调这些任务时遇到了麻烦。当开发人员专注于编码时,他会被打扰以解决生产中出现的问题,这使他很难再次专注于先前的任务。 我尝试分配%的开发人员时间用于操作工作,但是显然,这不能解决问题。我很想听听曾经遇到过这种情况的Scrum管理员的来信,您如何处理这种情况以及您有什么建议?

6
如果我的函数很复杂并且有很多变量,我应该创建一个类吗?
这个问题在某种程度上与语言无关,但并非完全与语言无关,因为面向对象编程(OOP)在Java中是不同的,而Java没有Python的一流功能。 换句话说,我对用Java之类的语言创建不必要的类感到内gui,但是我觉得在像Python这样少用的语言中可能会有更好的方法。 我的程序需要多次执行相对复杂的操作。该操作需要大量的“簿记”,必须创建和删除一些临时文件,等等。 这就是为什么它还需要调用许多其他“子操作”的原因-将所有内容放入一个巨大的方法中并不是很好,模块化,可读性强等。 现在这些是我想到的方法: 1.制作一个仅具有一个公共方法的类,并将子操作所需的内部状态保留在其实例变量中。 它看起来像这样: class Thing: def __init__(self, var1, var2): self.var1 = var1 self.var2 = var2 self.var3 = [] def the_public_method(self, param1, param2): self.var4 = param1 self.var5 = param2 self.var6 = param1 + param2 * self.var1 self.__suboperation1() self.__suboperation2() self.__suboperation3() def __suboperation1(self): # Do something with self.var1, self.var2, …

10
单一责任原则的适用性
我最近遇到了一个看似微不足道的建筑问题。我的代码中有一个简单的存储库,其名称如下所示(代码在C#中): var user = /* create user somehow */; _userRepository.Add(user); /* do some other stuff*/ _userRepository.SaveChanges(); SaveChanges 是一个简单的包装程序,用于将更改提交到数据库: void SaveChanges() { _dataContext.SaveChanges(); _logger.Log("User DB updated: " + someImportantInfo); } 然后,过了一段时间,我需要实现新的逻辑,该逻辑每次在系统中创建用户时都会发送电子邮件通知。由于有许多来电_userRepository.Add()和SaveChanges系统的时候,我决定更新SaveChanges如下: void SaveChanges() { _dataContext.SaveChanges(); _logger.Log("User DB updated: " + someImportantInfo); foreach (var newUser in dataContext.GetAddedUsers()) { _eventService.RaiseEvent(new UserCreatedEvent(newUser )) } …

15
使函数本质上重命名内置函数是否不明智?
在某些情况下,我对最小和最大函数感到困惑。 在一种情况下,当您使用函数取两个值中的更大或更小值时,就没有问题。例如, //how many autographed CD's can I give out? int howManyAutographs(int CDs, int Cases, int Pens) { //if no pens, then I cannot sign any autographs if (Pens == 0) return 0; //I cannot give away a CD without a case or a case without a CD return min(CDs, …

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.