The Global Workaround

"In a strictly object oriented environment like C#/.NET," writes J.D., "there's really no such thing as 'global variables'. Sure, you can create a public class called 'Global' with a bunch of static fields, but the folks looking to (ab)use global variables generally have a hard time making that conceptual leap."

"I work with those people each and every day — most of them senior to me — and while they haven't quite made that conceptual leap, they have discovered a workaround."

public bool DoQualityControlChecksPass(
out short actualValTypeID,
out bool replInsurRateInRange, out decimal actualReplInsRate,
out bool rentalYieldInRange, out decimal actualRentalYield,
out bool propValUnderMax, out decimal actualPropValue,
out bool livingAreaInRange, out double actualLivingArea,
out bool riskRatingsAllUnder4, out bool riskRatingsHave3OrMoreOver3,
out bool twoTierMktIsNo, out string actualTierMkt,
out bool mktValEqualsContrPrice, out decimal actualContractPrice,
out bool mktValVarianceFromEMVInRange, out decimal actualEMV,
out bool valDatePastOrPresent, out DateTime actualValuationDate,
out bool intCondWordsNotFound, out List<string> intCondWordsFound,
out bool extCondWordsNotFound, out List<string> extCondWordsFound,
out bool essRepairsWordsNotFound, out List<string> essRepairsWordsFound,
out bool commentsWordsNotFound, out List<string> commentsWordsFound,
out bool salesCountCorrect, out bool salesPricesInRange,
out bool salesNotTooOld, out List<int> invalidSalesIDs, out bool minReqSalesInSameSuburb,
out bool sameValAndValValidDate, out bool sameTenderPriceAndCheckCost,
out bool latestSaleGreaterThanValAmount, out bool strataEqualsStratum,
out List<string> falseSecuritisationFields,
out bool currentUseIsResidential,
out string currentUseNotAsResidential,
out bool impValRateInRange, out decimal impValRate,
out bool landValRateInRange, out decimal landValRate
)

"The results of this 43-parameter method are then fed into another method."