Thisis not a slander against my local church (God forbid!) or other faithful churches. However, I do believe failing to speak on this topic is indicative of a gap in the teaching of most western Christians. This is no small matter. Scripture dedicates several chapters to this single topic and if God, who never wastes time nor words, chooses to speak hundreds of words across multiple chapters pertaining to a subject, we ought to pay attention and teach about it.
This is an area where the rubber of gospel truth meets the road of the Christian walk. It is an area that, if well studied and faithfully submitted to, will bring about mature fruit in any believer and a greater love for the brethren.
Christian Liberty deals with morally neutral subjects and circumstantial opinions. In these areas, God has given each individual a conscience and His Word to help guide Christians into faithful obedience.
Now, more than likely you are already feeling anxious about some of these issues I have listed, and others not so much. That is perfectly fine. You should have some conviction, not only about some of these issues, but all of them.
In short, many of the early Christians were saved out of Roman paganism. Part of the worship, much like in Judaism, involved sacrificing animals to the gods. Given the quantity of sacrifices given each day, the animals were not just burned or thrown away, but butchered and then sold to the public at a lower cost.
This became a tough issue for the Christians who just left that system, knowing the evil behind the pagan worship. To some, consuming the sacrifice was just the same as being involved with the sacrifice itself. To others, it was an easy way to provide meat for their families. They knew and understood the Gospel. They knew they were a new creation, and no longer worshiped the false gods of their past, but now worshiped the one true and living God, and gave thanks to Him for the nourishment of the meat.
Paul distinguishes between these two groups as the weak, and the strong (Romans 14:1-2, 15:1). These were not terms to shame the weaker brethren, nor puff the strong up, but a way to exhort the weak to grow in knowledge and maturity while encouraging the strong to be humble, meek, and loving.
It is the tendency of the weaker brethren in these areas to judge the stronger brethren as being liberal, undisciplined, careless, and possibly unconverted. It is the tendency of the stronger brethren to judge the weak as legalistic, superstitious, and self-righteous. However, Paul gives warning to both sides:
However, our tendency is to go to the extreme. We do point to the dying Savior upon the tree as the ultimate example of love, but often hold that up as the only example of selfless love. In doing so we fail to show the ordinary and common actions of love. Few are called to the selfless love of martyrdom, but many are called to long lives of faithfulness in the body of Christ. Therefore, what God requires, God provides. He gives us ways to selflessly love one another, through ordinary, common, everyday means of Christian Liberty.
If you feel you must exercise your liberty in Christ, then you are no longer free, but enslaved to your liberty. The whole point of liberty is that it is not a commandment of God, but left for the individual to discern for themselves on the basis of their conscience, which is to be informed by scripture. However, if what was made for freedom is now turned into Law, it is no longer freedom, but a commandment. We must not make a law where God has granted freedom, either for ourselves or others.
If you go out to dinner with a brother that you know struggles with alcohol and looks to you as an example, you are met with a decision. Do you gratify yourself and exercise your freedom for a drink, potentially causing your brother to stumble, or do you give up your freedom for the sake of Christ, and love of your brother? One brings reproach upon yourself and your brother through sin, and the other brings love, glory, and honor to Christ.
He was oppressed and He was afflicted, Yet He did not open His mouth; Like a lamb that is led to slaughter, And like a sheep that is silent before its shearers, So He did not open His mouth. Isaiah 53:7
This is not an exhaustive list of concerns, but it will get you started. Romans 14:22 tells us the best thing to do is keep our convictions between us and God. We do not know the convictions of everyone around us. When our liberty may cause a brother to stumble, so keep it privately before God, and let everything you do be done in love.
God grants freedom according to the measure of faith given, and some may be restrained in an area because it could easily become temptation to excess and sin. Moderation prevents the extreme of flaunting your liberty leading to excess and sin. It also prevents the extreme of total abstinence, leading to legalism and improper judgment of others.
I mean, some languages provide too much freedom and personally I don't like it. I think it is better to follow the way how it works in serious languages like C++ and Java, but I never worked with them.
In the languages that I'm familiar with that have the capability to do so, a null/nil/undefined value is falsy. That means that it would be interpreted the same as false when used in a Boolean operation like described in the examples. However, I cannot say for absolute certainty that this will apply to all languages for all time. I also cannot say that everyone reading and working on your code will know this, especially if it's their first foray into a language that permits this behavior.
Personally, I prefer more explicit code. Even if it's slightly more verbose or less idiomatic for your given language, easier readability and maintainability is often a superior choice. Like anything, though, it's a tradeoff that must be decided among the team building the software. Often, decisions like this can be codified in the configuration of linters and other static analysis tools and violations can be detected (and sometimes auto-corrected) during the development process.
In Ruby, nil and false are falsey, and they are the only falsey values. Every other value is truthy, this includes true (obviously), but also values that some other languages might not consider truthy such as 0, 0.0, "", [], , and so on.
It is, however, quite common, to convey some extra information using the return value of a purportedly boolean method. Actually, the most extreme example is not a method but the builtin unary prefix defined? operator, which is a boolean operator that (at least in the most widely-used Ruby implementation) never actually returns a boolean!
The Language Specification (section 11.4.3.2 The defined? expression) only guarantees that defined? returns a truthy value or nil, but it does not require that the falsey value be precisely the value false. And many Ruby implementations use that fact to convey additional information to the programmer. For example, in YARV:
In the Ruby community, this is considered to be completely normal, and there are methods in widely-used third-party libraries, in the standard libraries, and in the core library that do this, and the specification for those methods is often explicitly written in such a way to allow this, e.g. requiring only truthy or falsey values instead of true or false.
Code is read more than it is written. Because of this, you should be explicit whenever possible, and never leave any ambiguity, and never craft functions with multiple return types. Keep things straight forward and decoupled.
Lets start with the easiest, mechanic or what works. If your language does not allow you to return nothing, you should return false. If your language does not define false you probably should return nothing, but now we are moving into dialect.
Remember code has two roles to tell the computer what to do and to convey intent to the next programmer. As you communicate with other programmers you will notice that each language develops conventions in how to communicate. There has been many a java programmer who was derided for using java conventions in C and vise versa. So unless there is specific need to communicate something explicit, follow the conventions of your language.
However sometimes you want to say something explicit. This is where the most difficult and subtle point arises. What are the semantic implications of your code. Note that there are entirely different meanings between not responding and "No" when asked if there are any problems, and each answer is appropriate in a specific context.
Some languages there is a difference between FALSE and an unknown NULL/nil/undefined and you cannot rely on your expctations to hold when a BOOLEAN value can have three states: TRUE, FALSE or NULL (undefined) and there is a semantic difference between saying a value is false or that it is undefined and you aren't sure if it is either true or false.
Remember that programming is not just about making the computer do what you want it to do. It's also about explaining to human readers of the code what you want the computer to do. Returning a value on some code paths and not others is confusing. It may look like an oversight to future readers.
What I meant is, independent of the programming language, your function/method name should define what it does inside. It's for the readability, right? The naming of your function/method gives some hint when somebody looks at it for the first time. If anybody wants to know what it does, he surely has to go through the whole definition but the name should give some summary first.
Now considering this fact, we always expect something from a function/method right? The name of the function/method tells us what it does and we know, "Ok, we are expecting this from this function/method"
If you return nothing you can pretty much return anything right? So if we're expecting you function returns True of anything then putting it inside an if condition will always result in True and the if block will always get executed. [Unles you return None, nill, null, 0]
3a8082e126