我注意到许多函数式编程狂热分子都坚持某些核心概念:
避免国家
避免可变数据
最大限度地减少副作用
等等...
我不只是想知道其他什么东西会使函数式编程,但为什么这些核心思想是好的?为什么避免国家和其他国家好?
我不想建立自己的VPN,但我想知道一些事情....
如果我用C#构建一个程序,有没有办法让它通过VPN连接或初始化连接或类似的东西?
或者,如果我已经在我的计算机上运行VPN软件,并且我已连接,如果我的C#应用程序在表单中内置了Web浏览器控件或者只是发出Web请求,那么这些都将通过VPN发送吗?或者应用程序会以某种方式绕过VPN?
我最近一直在寻找很多代码(为了我自己的利益,因为我还在学习编程),我注意到了许多Java项目(来自看起来很受尊重的程序员),他们使用这些项目某种立即下行.
我实际上有多个例子,但这是我直接从代码中提取的一个例子:
public Set<Coordinates> neighboringCoordinates() {
HashSet<Coordinates> neighbors = new HashSet<Coordinates>();
neighbors.add(getNorthWest());
neighbors.add(getNorth());
neighbors.add(getNorthEast());
neighbors.add(getWest());
neighbors.add(getEast());
neighbors.add(getSouthEast());
neighbors.add(getSouth());
neighbors.add(getSouthWest());
return neighbors;
}
Run Code Online (Sandbox Code Playgroud)
从同一个项目中,这是另一个(也许更简洁)的例子:
private Set<Coordinates> liveCellCoordinates = new HashSet<Coordinates>();
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,您可以看到该方法的返回类型为Set<Coordinates>- 但是,该特定方法将始终只返回HashSet- 而不是其他类型Set.
在第二个例子中,liveCellCoordinates最初定义为a Set<Coordinates>,但立即变为a HashSet.
而且这不仅仅是这个单一的,具体的项目 - 我发现在多个项目中就是这种情况.
我很好奇这背后的逻辑是什么?是否有一些代码约定会考虑这种良好做法?它能以某种方式使程序更快或更高效吗?它有什么好处?
在开发Java Swing GUI时,扩展JFrame总是一个坏主意吗?那么JPanel或其他JComponents呢?还有什么让它变坏?
我被告知,与使用Thread.Sleep(int)程序在继续之前等待一段时间相反,我应该使用计时器.
我想知道应该怎么做?有人可以给我一个简短的例子吗?