Я действительно наслаждаюсь всеми подкастами от сети TWIT, хотя FLOSS Weekly и безопасность Теперь являются моими любимыми подкастами "техника". Я на самом деле никогда не слышал подкаст Переполнения стека, но буду определенно давать ему попытку после наблюдения всех рекомендаций здесь.
кроме того, я полагаю, что Alex Lindsay (Пиксельного Корпуса, и часто на Macbreak Weekly на УПРЕКЕ) будет запускать очень технический подкаст на разработке Mac. Я с нетерпением жду этого, поскольку я был основным программист Java и интересуюсь изучением XCode и Obj-C.
Побочный эффект - это все, что делает метод, кроме вычисления и возврата значения. Любое изменение значений полей экземпляра или класса является побочным эффектом, как и рисование чего-либо на экране, запись в файл или сетевое соединение.
Строго говоря, «функция» определяется как не имеющая побочных эффектов - что есть почему Java использует вместо этого слово «метод». Реальная функция без возвращаемого значения была бы бессмысленной.
Очевидно, что метод, не имеющий возвращаемого значения, должен иметь какой-то побочный эффект, который оправдывает его существование. Примером являются методы Set - побочным эффектом является изменение внутреннего состояния объекта.
Это означает, что вы не вызываете «истинную» функцию в математическом смысле. Такая функция всегда возвращает значение, которое полностью определяется ее входными параметрами. Нет никакого «состояния», которое можно было бы изменить, и ничего другого случиться не может. Вот почему функциональное программирование интересно с точки зрения распараллеливания; это упрощает доказательство того, что, например, два вызова функций независимы и могут выполняться параллельно.
См. статью в Википедии о чистых функциях для получения дополнительных сведений.
Побочный эффект - это когда вызов метода изменяет состояние класса. Итак
public class SideEffectClass{
private int state = 0;
public doSomething(int arg0){
state += arg0;
}
}
Здесь doSomething (int arg0) имеет побочный эффект изменения переменной состояния.
Когда вы думаете о программе, вы можете думать о ней как о командах + состояние + ввод. Таким образом, если домен программы - это диапазон всех возможных входных * состояний и программа имеет побочные эффекты, вы можете видеть, что кодомен возможных результатов для приложения может стремительно расти по мере увеличения количества побочных эффектов. Это делает возможные состояния программы большими, что приводит к сложному тестированию. Парадигма функционального программирования предназначена для устранения побочных эффектов. Делая функции первоклассными гражданами и делая все объявления неизменяемыми, функциональное программирование предотвращает побочные эффекты,